I have ready tried it. The error "PermGen" is corrected. But I even got the error "Can't intern zero-length symbol." I have search in google but can not find any useful article.
On Tue, Jun 19, 2012 at 2:21 PM, Blake McBride blake@mcbride.name wrote:
Java puts code (as opposed to data) in PermGen space (i.e. space that doesn't get garbage collected). The size of this space is fixed by default but can be overridden with a command line argument. Maxima (along with the Java code) probably contains too much code for the default java configuration. You can increase this java default as follows:
java -XX:MaxPermSize=200M -jar /path/to/abcl.jar
This makes the max permgen space 200 MB. You may have to vary that number.
Blake McBride
On Tue, Jun 19, 2012 at 6:29 AM, Phuc Luoi phucluoi@gmail.com wrote:
---------- Forwarded message ---------- From: Phuc Luoi phucluoi@gmail.com Date: Tue, Jun 19, 2012 at 12:51 PM Subject: Re: [armedbear-devel] How to compile and run Maxima with ABCL? To: Robert Dodier robert.dodier@gmail.com
Thanks for your answer.
I tried this and got these errors:
Can't intern zero-length symbol. Restarts: 0: RETRY Retry compiling #<ASDF:CL-SOURCE-FILE "maxima" "utilities" "mformt">. 1: ACCEPT Continue, treating compiling #<ASDF:CL-SOURCE-FILE "maxima" "utilities" "mformt"> as having been successful. 2: TOP-LEVEL Return to top level.
by compiling the file /maxima-5.27.0/src/mformt.lisp (step 9)
I have choose the option 1 to accept this. I got some more errors by compiling. After all I got
Out of memory PermGen space Restarts: 0: TOP-LEVEL Return to top level.
and abcl did not compiled maxima.
Can you tell me why I got these error? And how can repair them?
On Tue, Jun 19, 2012 at 5:04 AM, Robert Dodier robert.dodier@gmail.com wrote:
On 2012-06-16, Phuc Luoi phucluoi@gmail.com wrote:
How can I compile and run Maxima with ABCL?
(1) Unpack a Maxima tarball. http://sourceforge.net/projects/maxima and follow links to download page. Look for "Maxima-source".
(2) cd /path/to/maxima-5.27.0
(3) java -jar /path/to/abcl.jar
(4) (configure) ;; you can probably accept defaults for most/all questions
(5) (quit)
(6) cd src
(7) java -jar /path/to/abcl.jar
(8) (require 'asdf)
(9) (asdf:operate 'asdf:load-op :maxima)
(10) (quit)
(11) java -jar /path/to/abcl.jar
(12) (require 'asdf)
(13) (asdf:operate 'asdf:load-op :maxima) ;; yes, same as (9)
(14) (cl-user::run) ;; should bring up Maxima banner & input prompt
Furthermore can I emmbed maxima in a Java Programm with ABCL?
Yes. I've appended an example program. Command line to compile it:
javac -cp /path/to/abcl.jar -d /path/to/compiled/class abcl_maxima.java
To execute it: (you must be in the Maxima src directory)
java -cp /path/to/compiled/class:/path/to/abcl.jar abcl_maxima
I get: (takes a minute or two to load Maxima)
loading Maxima ... finished. x.getClass => class org.armedbear.lisp.Cons x = org.armedbear.lisp.Cons@1748ba8 x.javaInstance => org.armedbear.lisp.Cons@1748ba8 x.javaInstance.getClass => class org.armedbear.lisp.Cons 4 factors of 12341234 factor: 2, multiplicity: 1 factor: 73, multiplicity: 1 factor: 137, multiplicity: 1 factor: 617, multiplicity: 1
Note that all user functions have names which begin with dollar sign. E.g. user function ifactors <==> $IFACTORS in Lisp
If you need help with Lisp programming for Maxima, ask questions on the mailing list. See: http://maxima.sourceforge.net/maximalist.html
Hope this helps, have fun, & good luck.
Robert Dodier
PS. Example program abcl_maxima.java:
// abcl_maxima.java -- example program for calling Maxima from Java via ABCL // copyright 2012 by Robert Dodier // I release this work under terms of the GNU General Public License
import org.armedbear.lisp.Interpreter; import org.armedbear.lisp.Package; import org.armedbear.lisp.Packages; import org.armedbear.lisp.Symbol; import org.armedbear.lisp.Function; import org.armedbear.lisp.LispObject; import org.armedbear.lisp.Fixnum; import org.armedbear.lisp.Bignum; import org.armedbear.lisp.Cons;
public class abcl_maxima { public static void main (String [] args) throws Exception { int a;
if (args.length > 0) a = Integer.parseInt (args [0]); else a = 12341234;
Interpreter I = Interpreter.createInstance (); System.out.print ("loading Maxima ... "); I.eval ("(require 'asdf)"); I.eval ("(asdf:operate 'asdf:load-op :maxima)"); System.out.println ("finished."); Package P = Packages.findPackage ("MAXIMA");
// java.util.List <Symbol> L = P.getAccessibleSymbols (); // for (Symbol S : L) // { // if (P.equals (S.getPackage ())) // System.out.println (S.toString ()); // }
Symbol S = P.findAccessibleSymbol ("$IFACTORS"); Function F = (Function) S.getSymbolFunction (); LispObject x = Bignum.getInstance (a); x = F.execute (x); System.out.println ("x.getClass => " + x.getClass ()); System.out.println ("x = " + x); System.out.println ("x.javaInstance => " + x.javaInstance ()); System.out.println ("x.javaInstance.getClass => " + x.javaInstance () . getClass ());
int n = ((Cons) x).length (); System.out.println ((n - 1) + " factors of " + a);
for (int i = 1; i < n; i++) { Cons x1 = (Cons) ((Cons) x).NTH (i); Fixnum f = (Fixnum) x1.NTH (1); Fixnum m = (Fixnum) x1.NTH (2); System.out.println ("factor: " + f.intValue () + ", multiplicity: " + m.intValue ()); } } }
armedbear-devel mailing list armedbear-devel@common-lisp.net http://lists.common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel
armedbear-devel mailing list armedbear-devel@common-lisp.net http://lists.common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel