Вопрос

Я пытаюсь собрать GNU Classpath 0.98 и JamVM 1.5.2.
Следуя JamVM readme, я выполнил 'configure;сделать;сделайте install' на JamVM, и это сработало.

Затем я добавил jamvm и Sun javac к path.
Затем с помощью GNU Classpath я сделал это:

./configure --enable-jni --disable-gtk-peer --disable-gconf-peer --disable-plugin

Я получил эту ошибку:

Сбой javac (см. config.log)

На config.log, я вижу, что javac не может найти VMStackWalker (который зависит от jamvm) Я добавил классы jamvm в CLASSPATH, затем я получил эту ошибку:

Сбой виртуальной машины Java jamvm (см. config.log)

На config.log, Я вижу , что jamvm не может найти java.lang.Class.

Что случилось?!

Это было полезно?

Другие советы

Шаги по компиляции GNU Classpath для Ubuntu12.04:https://groups.google.com/forum /#!тема/jruby-gsoc/-fnKnP7zxbI

Шаги по компиляции JamVM для Ubuntu 12.04:https://groups.google.com/forum /#!тема/jruby-gsoc/uJ6RlVvHR-0

попробуйте ecj, для classpath нужен компилятор Java, а sun sdk, похоже, здесь не подходит

Мои приключения в Mac OS X 10.11:

ДЖАМВМ

построенный с make clean && CFLAGS="-m32" ./configure.

Путь к классу GNU

потребовалось немного больше:

# 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

Если вы make теперь компиляция завершается неудачей с java_io_VMConsole.c:80:19: error: use of undeclared identifier 'IUCLC'.Я закончил тем, что погуглил, что это за символ - это восьмеричное число 01000, и добавлено оно прямо к источнику:

vim ./native/jni/java-io/java_io_VMConsole.c
# add this line in the beginning of the file: #define IUCLC   0001000

После этого ./configure продолжает жаловаться на ваш javac не будучи GCJ.Это похоже на старую ошибку GNU Classpath, я нашел упоминания о подобных проблемах.Как вы видите ниже, ./configure сломан и не будет работать ни с каким javac кроме gcj.

В итоге я просто редактировал ./configure:

  • в начале я добавил строку export JAVAC=$(which javac)
  • Я заменил условное присвоение на JAVAC_IS_GCJ=no

Сейчас, ./configure должно пройти, но make не буду.

Я погладил все Makefiles это ./configure сгенерированный для -fsource=, а затем либо закомментировал строки с -fsource (это специфичный для gcj флаг), если бы существовали альтернативные строки с -source аргумент, или просто замененный fsource с source.

Последний шаг, я должен был отредактировать верхний уровень Makefile и удалить $(EXAMPLESDIR) От SUBDIRS = ... строка - она не скомпилировалась с ошибкой:

./gnu/classpath/examples/CORBA/NamingService/Demo.java:99: error: 
    package gnu.classpath.tools.tnameserv does not exist
      gnu.classpath.tools.tnameserv.Main.main(args);"

Он построил!

Я получил ошибки при его запуске, но это совершенно другая история...

$ 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

(Я обновлю ответ, если мне удастся его запустить)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top