come costruire GNU Classpath e JamVM
Domanda
Sto cercando di costruire GNU Classpath 0,98 e JamVM 1.5.2.
A seguito della JamVM readme, ho fatto 'configurare;fare;make install " sul jamVM, e ha funzionato.
Ho poi aggiunto jamvm e Sole javac per il percorso.
Poi con GNU Classpath ho fatto questo:
./configure --enable-jni --disable-gtk-peer --disable-gconf-peer --disable-plugin
Ho ottenuto questo errore:
Il javac non è riuscito (vedi config.di registro)
Sul config.log
, Vedo che javac non è possibile trovare VMStackWalker (che è jamvm specifici)
Ho aggiunto il jamvm classi di CLASSPATH, quindi ho ottenuto questo errore:
La Java VM jamvm fallito (vedi config.di registro)
Sul config.log
, Vedo che jamvm non riesce a trovare java.lang.Class
.
Cosa c'è di sbagliato?!
Soluzione
Altri suggerimenti
Passi per la compilazione GNU Classpath per Ubuntu12.04: https://groups.google.com/forum/#!topic/ JRuby-GSOC / -fnKnP7zxbI
Passi per la compilazione jamvm per Ubuntu 12.04: https://groups.google.com/forum/#!topic / JRuby-GSOC / uJ6RlVvHR-0
provare Corte di giustizia europea, hanno bisogno di un percorso di classe compilatore Java, e il sole sdk sembra essere nulla di buono qui
Il mio Mac OS X 10.11 avventure:
JamVM
costruito con make clean && CFLAGS="-m32" ./configure
.
GNU Classpath
ha preso un po ' di più:
# 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
Se si make
ora, la compilazione fallisce con
java_io_VMConsole.c:80:19: error: use of undeclared identifier 'IUCLC'
.Ho finito googling ciò che quel simbolo è - è un ottale 01000, e aggiunto direttamente alla fonte:
vim ./native/jni/java-io/java_io_VMConsole.c
# add this line in the beginning of the file: #define IUCLC 0001000
Dopo di che, ./configurare continua a lamentarsi per il tuo javac
non GCJ.Sembra un vecchio bug di GNU Classpath, ho trovato menzione di problemi simili.Come potete vedere sotto, ./configure
è rotto e non funziona con qualsiasi javac
diverso gcj
.
Ho finito solo la modifica ./configure
:
- all'inizio, ho aggiunto una riga
export JAVAC=$(which javac)
- Ho sostituito assegnazione condizionale con
JAVAC_IS_GCJ=no
Ora, ./configure
dovrebbe passare, ma make
non.
Ho grepped tutti i Makefiles
che ./configure
generato per -fsource=
, e quindi righe di commento con -fsource
(è un gcj-flag specifico), se c'era un alternativa linee con -source
argomento, o semplicemente sostituito fsource
con source
.
Ultimo passo, ho dovuto modificare di livello superiore Makefile
e eliminare $(EXAMPLESDIR)
da SUBDIRS = ...
linea - non compilare con un errore:
./gnu/classpath/examples/CORBA/NamingService/Demo.java:99: error:
package gnu.classpath.tools.tnameserv does not exist
gnu.classpath.tools.tnameserv.Main.main(args);"
Costruito!
Ho avuto errori durante l'esecuzione di esso, ma che è una storia completamente diversa...
$ 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
(Io aggiornare la risposta, se riesco a farlo funzionare)