【发布时间】:2011-01-11 09:03:54
【问题描述】:
我在编译依赖于 jline-0.9.94 的 maven 代码时遇到问题。具体来说,我正在使用其默认 Ant 目标编译 Groovy 1.7.6 并收到以下错误:
[...]
-banner:
[echo] Java Runtime Environment version: 1.6.0_22
[echo] Java Runtime Environment vendor: Apple Inc.
[echo] Ant version: Apache Ant version 1.7.1 compiled on June 27 2008
[echo] Operating system name: Mac OS X
[echo] Operating system architecture: x86_64
[echo] Operating system version: 10.6.6
[echo] Base directory: /Users/ldhanson2/tmp/groovy-1.7.6
[echo] Java Home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
[...]
-stagedcompile-groovy:
[groovyc] Compiling 166 source files to /Users/ldhanson2/tmp/groovy-1.7.6/target/classes
[groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
[groovyc] Compile error during compilation with javac.
[groovyc] /Users/ldhanson2/tmp/groovy-1.7.6/src/main/groovy/ui/InteractiveShell.java:222: cannot find symbol
[groovyc] symbol : method setDefaultPrompt(java.lang.String)
[groovyc] location: class jline.ConsoleReader
[groovyc] reader.setDefaultPrompt("groovy> ");
[groovyc] ^
jline 依赖已正确解析,但奇怪的是 jar 中似乎没有 setDefaultPrompt 方法:
$ javap -classpath target/lib/compile/jline-0.9.94.jar jline.ConsoleReader | grep setDefaultPrompt
$
(javap 输出中似乎也缺少其他方法,但 setDefaultPrompt 是破坏我构建的方法。)
我尝试从本地 maven 存储库中清除 jline 并再次尝试,但无济于事。我还检查了来自Maven Central 的 jline jarfile 以及具有相同结果的镜像。
奇怪的是,我可以将 jar 文件复制到另一台机器(Sun)并执行完全相同的步骤,并且我在 jar 文件中看到了预期的 setDefaultPrompt 方法。其他人也在 Mac 上成功执行了相同的步骤。
我的机器上可能发生什么会阻止 Java 工具链查看 jar 文件中包含的方法?
【问题讨论】:
-
雪豹下的 jline jar 也有同样的问题。你找到答案了吗?
标签: java macos groovy javap jline