Нераспознанная опция: -o Не удалось создать виртуальную машину Java - PullRequest
0 голосов
/ 12 ноября 2011

У меня необычная ошибка сборки при использовании 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 Ответ

3 голосов
/ 12 ноября 2011

Я думаю, что проблема в этой строке - опция -classpath, которая интерпретирует antlr.Tool как путь к классу, а затем пытается разобрать опцию -o.

Параметр -o - это параметр командной строки org.antlr.Tool, а не параметр JVM.

Правильный способ запуска инструмента antlr:

java org.antlr.Tool [options]

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

...