3

我正在使用 Maven 构建并得到一个看似无害的“未找到符号”错误 - 问题是我已经用我知道的所有较低级别的 Java 工具验证了构建是正确的,而且它看起来很密封。我用这个命令行构建:

javac -d /home/dan/EmailClient/Initial-Client/target/classes -classpath <many jars>:
/thepath/Common/1.0-SNAPSHOT/Common-1.0-SNAPSHOT.jar  /* I need this one */
-sourcepath /thepath/src/main/java: <the files> 
-s /thepath/target/generated-sources/annotations 
-g -nowarn -target 1.7 -source 1.7 -encoding UTF-8

得到这个错误:

Launcher.java:119: error: cannot find symbol
    return Promise.onPool(getterPool).continueWith(new Transformer<Void, Promise<List<Void>>>() {

(错误指向onPool

并运行jar xf Common-1.0-SNAPSHOT.jarcd通过在命令行中复制和粘贴目录),然后

javap Promise.class

这表明

  public static me.unroll.functional.Promise<java.lang.Void> onPool(java.util.concurrent.Executor);

所以这在我看来是无懈可击的——我缺少什么调试步骤?

此外,这可以在单独的机器上正常构建,并且可以在 Eclipse 中正常运行,并打开所有相关的源文件,而不是从我的实际构建机器上运行。

4

1 回答 1

2

我建议您检查<many jars>类路径中的部分,您可能会在其中找到旧版本的 Maven 构建的 jar,它正在赢得类名解析游戏。

于 2013-01-02T18:44:00.690 回答