Нераспознанная опция: -o Не удалось создать виртуальную машину Java
У меня необычная ошибка сборки при использовании Buildroot для создания образа для моего Phidget SBC. Это необычно, потому что это происходит ТОЛЬКО на моем ноутбуке для разработки, а НЕ на моем ноутбуке общего пользования, хотя я использую ТОЛЬКО ту же среду Builroot, которая была опубликована самими Phidgets.
Когда я пытаюсь создать образ Buildroot, я получаю следующую ошибку при попытке скомпилировать GNU classpath:
Making all in tools
make[2]: Entering directory `/home/xxxx/buildroot_phidgetsbc/buildroot-phidgetsbc_1.0.4.20111028/output/build/classpath-0.98/tools'
/bin/mkdir -p classes asm
/bin/mkdir -p ../tools/generated/gnu/classpath/tools/gjdoc/expr
java -classpath antlr.Tool -o ../tools/generated/gnu/classpath/tools/gjdoc/expr/ \
./gnu/classpath/tools/gjdoc/expr/java-expression.g
Unrecognized option: -o
Could not create the Java virtual machine.
make[2]: *** [tools.zip] Error 1
Единственное отличие, которое я могу заметить, это разные версии Linux (Ubuntu), которые я использую на каждом ноутбуке. Также я не могу найти параметр -o, задокументированный для Java, и не понимаю, почему он работает на одном ноутбуке, а не на другом.
Любые предложения будут полезны.
** ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ **
Я взглянул на Makefile, и вот, что я думаю, соответствующие строки:
ANTLR = java -classpath antlr.Tool...
# Для создания примера zip просто зависит от источников и # игнорируйте файлы классов. Всегда восстанавливайте все файлы.class и немедленно удаляйте их. И скопируйте файлы шаблонов, которые мы используем, в классы dir #, чтобы они также были включены.
$ (TOOLS_ZIP): $ (ALL_TOOLS_FILES)
@rm -rf классы asm /bin/mkdir -p классы asm /bin/mkdir -p $ (gjdoc_gendir) / gnu / classpath / tools / gjdoc / expr
$ (ANTLR) -o $ (gjdoc_gendir) / gnu / classpath / tools / gjdoc / expr / \
$ (SRCDIR)/gnu/classpath/tools/gjdoc/expr/java-expression.g
Вы можете увидеть, где находится строка "проблема" в последнем цитированном выше
** ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ 2 И РЕШЕНИЕ ПРОБЛЕМЫ **
Я проверил Makefile на своем "обычном" компьютере, и он отличается от моего "разрабатываемого" ноутбука. Я установил 'antlr' на мою 'обычную' машину, в то время как ее не было на моей разработке. Я предполагаю, что когда./configure был запущен, он поднял это и изменил команду antlr для соответствия, за исключением того, что на моей машине разработки это создало ошибочную альтернативу. Для справки, мой "обычный", т. Е. Рабочий makefile:
ANTLR = runantlr ANTLR_JAR = /usr/share/java/antlr.jar
Установка antlr на моей машине для решения этой проблемы решила проблему.
Спасибо за помощь
1 ответ
Я думаю, что проблема в этой строке - опция -classpath, которая интерпретирует antlr.Tool как путь к классу, а затем пытается разобрать опцию -o.
Параметр -o - это параметр командной строки org.antlr.Tool, а не параметр JVM.
Правильный способ запуска инструмента antlr:
java org.antlr.Tool [options]
Мне любопытно, как выглядит эта линия исполнения на машине, которая работает. Потому что тот, который вы показали мне, ваш пост определенно неверен.