私はあなたがJavaマクロでバッチモードで実行できるこのアプリケーションを持っています。をmymacro.java
使用するがありますmyjar.jar
。簡単にするために、アプリケーションを実行しているのと同じディレクトリにすべてを配置したので、クラスパスは"./myjar.jar"
です。
アプリケーションを実行するコマンドは次のとおりです。
theapplication -classpath "./myjar.jar" -batch mymacro.java
ここで、-classpath
タグはアドバタイズすることを実行します。つまり、クラスパスをオーバーライドします。これで、WindowsXPPCで正常に動作します。ただし、NoSuchMethodError
Linuxクラスターでまったく同じことを実行すると、が発生します。
java.lang.NoSuchMethodError:
com.foo.bar.baz.theMethod(Ljava/lang/String;Ljava/lang/String;)I
私はこれを理解することはできません。同じ.java、同じ.jar、同じtheMethod
。クラスパスはこれ以上単純化することはできません。のその他のメソッドはmyjar.jar
、エラーなしで呼び出されています。何がうまくいかない可能性がありますか?
参考までに、競合を排除するために、両方のマシンでCLASSPATH
環境変数をに設定しました。"."
編集
java -version
私のWindowsXPPCでの出力:
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode)
Linuxクラスターの場合:
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)