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 に答える