【问题标题】:Unrecognized option: -o Could not create the Java virtual machine无法识别的选项:-o 无法创建 Java 虚拟机
【发布时间】:2011-11-12 01:43:24
【问题描述】:

我在使用Buildroot 为我的Phidget SBC 创建映像时遇到了异常的构建错误。这很不寻常,因为它只发生在我的开发笔记本电脑上,而不是在我的通用笔记本电脑上,即使我使用与 published by Phidgets 自己完全相同的 Builroot 环境。

当我尝试创建我的 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) 版本。此外,我找不到为 Java 记录的 -o 选项,也不明白为什么它可以在一台笔记本电脑上运行,而不能在另一台笔记本电脑上运行。

任何建议都会有所帮助。

** 附加信息 **

我查看了 Makefile,以下是我认为的相关行:

ANTLR = java -classpath antlr.Tool ...

#生成示例 zip 仅依赖于来源并忽略 #类文件。始终重新生成所有 .class 文件并删除它们 #立即地。并将我们使用的模板文件复制到 classes 目录 #所以他们也被包括在内。

$(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 命令以适应,除非在我的开发机器上它创建了一个错误的替代方案。作为参考,我的“常规”即工作生成文件是:

ANTLR = runantlr ANTLR_JAR = /usr/share/java/antlr.jar

在我的开发机器上安装 antlr 解决了这个问题。

感谢您的帮助

【问题讨论】:

    标签: java buildroot gnu-classpath


    【解决方案1】:

    我认为该行的问题是 -classpath 选项将 antlr.Tool 解释为类路径,然后尝试解析 -o 选项。

    -o 选项是 org.antlr.Tool 命令行选项,它不是 JVM 选项。

    启动antlr工具的正确方法是:

    java org.antlr.Tool [options]
    

    我很好奇那条执行线在运行的机器上是什么样子的。因为您向我展示的帖子绝对不正确。

    【讨论】:

    • +1。我想你是正确的。看到-classpathantlr.Tool 之间的两个空格了吗?我打赌那里有一些变量正在扩展,并且由于某种原因该变量是空的/未定义的。也就是说,不是java -classpath[space]VARIABLE[space]antlr.Tool ...,而是java -classpath[space][space]antlr.Tool ...,导致你描述的问题。
    • @ruakh,是的,我认为你是对的,第二个空格肯定看起来很可疑。我认为,如果 Kerubu 可以向我们展示工作机器的日志行,它将揭示出什么问题。
    • 感谢 Strelok。我没有机会检查两个 Buildroots,但我已经引用了 'ptoblem' 机器上的相关 Makefile 行,它看起来确实像你建议的那样不正确。为什么它可以在一台机器上运行而不是另一台机器是一个谜,但我会进一步调查和报告。
    • 正如 ruakh 所说,可能存在未正确扩展的环境变量。从工作的机器上看到那条线,问题就会被发现。
    • 我很困惑为什么在 2 台机器上会有所不同。但是您可以尝试将生成文件的 ANTLR 行更改为 ANTLR = java org.antlr.Tool 看看会发生什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多