Нераспознанная опция: -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]

Мне любопытно, как выглядит эта линия исполнения на машине, которая работает. Потому что тот, который вы показали мне, ваш пост определенно неверен.

Другие вопросы по тегам