comment construire GNU Classpath et JamVM
Question
J'essaie de construire GNU Classpath 0.98 et JamVM 1.5.2.
Suite au fichier Lisez-moi de JamVM, j'ai configuré ;faire;make install' sur jamVM, et cela a fonctionné.
J'ai ensuite ajouté jamvm et Sun javac au chemin.
Ensuite, avec GNU Classpath, j'ai fait ceci :
./configure --enable-jni --disable-gtk-peer --disable-gconf-peer --disable-plugin
J'ai eu cette erreur :
Le javac a échoué (voir config.log)
Sur le config.log
, Je vois que Javac ne trouve pas VMStackWalker (qui est spécifique à JAMVM) J'ai ajouté les classes JAMVM au ClassPath, puis j'ai eu cette erreur:
La machine virtuelle Java jamvm a échoué (voir config.log)
Sur le config.log
, je vois que jamvm ne trouve pas java.lang.Class
.
Qu'est-ce qui ne va pas?!
La solution
Autres conseils
Étapes à suivre pour la compilation de GNU Classpath pour Ubuntu12.04: https://groups.google.com/forum/#!topic/ JRuby-GSOC / -fnKnP7zxbI
Étapes à suivre pour compiler jamvm pour Ubuntu 12.04: https://groups.google.com/forum/#!topic / jruby-GSOC / uJ6RlVvHR-0
essayer CJE, classpath besoin d'un compilateur java, et le soleil sdk semble pas bien ici
Mes aventures sous Mac OS X 10.11 :
JamVM
construit avec make clean && CFLAGS="-m32" ./configure
.
Chemin de classe GNU
j'en ai pris un peu plus :
# If you already made an attempt
make clean
## If you don't --disable-tools. I didn't have antlr, so I downloaded it.
#curl -O http://www.antlr.org/download/antlr-4.5.1-complete.jar
./configure --disable-gtk-peer --disable-gconf-peer \
--disable-tools # for tools: --with-antlr-jar=antlr-4.5.1-complete.jar
Si tu make
maintenant, la compilation échoue avecjava_io_VMConsole.c:80:19: error: use of undeclared identifier 'IUCLC'
.Je ai fini par chercher sur Google quel est ce symbole - c'est un 01000 octal, et je l'ai ajouté directement à la source :
vim ./native/jni/java-io/java_io_VMConsole.c
# add this line in the beginning of the file: #define IUCLC 0001000
Après cela, ./configure continue de se plaindre de votre javac
n'étant pas GCJ.Cela ressemble à un vieux bug de GNU Classpath, j'ai trouvé des mentions de problèmes similaires.Comme vous le voyez ci-dessous, ./configure
est cassé et ne fonctionnera avec aucun javac
autre que gcj
.
J'ai fini par éditer ./configure
:
- au début, j'ai ajouté une ligne
export JAVAC=$(which javac)
- J'ai remplacé l'affectation conditionnelle par
JAVAC_IS_GCJ=no
Maintenant, ./configure
devrait passer, mais make
ne le fera pas.
J'ai saisi tout le Makefiles
que ./configure
généré pour -fsource=
, puis j'ai commenté les lignes avec -fsource
(c'est un indicateur spécifique à gcj) s'il y avait une ligne alternative avec -source
argument, ou simplement remplacé fsource
avec source
.
Dernière étape, j'ai dû modifier le niveau supérieur Makefile
et supprimer $(EXAMPLESDIR)
depuis SUBDIRS = ...
ligne - il n'a pas été compilé avec une erreur :
./gnu/classpath/examples/CORBA/NamingService/Demo.java:99: error:
package gnu.classpath.tools.tnameserv does not exist
gnu.classpath.tools.tnameserv.Main.main(args);"
Ça a construit !
J'ai eu des erreurs en l'exécutant, mais c'est une histoire totalement différente...
$ DYLD_FALLBACK_LIBRARY_PATH=/usr/local/classpath/lib/classpath \
/usr/local/jamvm/bin/jamvm -verbose:class -verbose:jni Test
...
Failed to open library /usr/local/classpath/lib/classpath/libjavanio:
dlopen(/usr/local/classpath/lib/classpath/libjavanio.so,
1): image not found]
...
Exception occurred while printing exception (java/lang/NoClassDefFoundError)...
Original exception was java/lang/UnsatisfiedLinkError
(Je mettrai à jour la réponse si je parviens à l'exécuter)