パッケージ client に public static void main() を持つ単純なクラス FabricClient があります。このパッケージは、私のプロジェクトの「bin」ディレクトリにあります。bin ディレクトリから、コマンド ラインで、次のようにこのクラスのメインを実行できます。
user@sys /c/projects/myproject/bin
$ java -classpath .;c:\dir\my.jar client.FabricClient
Java コマンドを手動で実行する親ディレクトリ (/c/projects/myproject) から ant build.xml ファイルを実行したいと考えています。次のように dir 属性を使用してみました。
<target name="run-client">
<java classname="client.FabricClient"
classpath="${classpath}"
fork="true"
failonerror="true"
dir="./bin">
</java>
</target>
私のクラスパス変数には、現在のディレクトリと、コマンド ラインで使用される my.jar のディレクトリがあります (クラスをコンパイルする ant コマンドは、同じ変数で正常に動作します)。
クラスパスの生成に使用される設定は次のとおりです
<property name="my.jar" location="c:\dir\my.jar" />
<property name="classpath" location=".:${my.jar}:." />
典型的な java.lang.NoClassDefFound エラーが発生しています: client/FabricClient
Ant バージョン 1.7.0 を使用しています
build.xml ファイルを bin に移動して dir 属性を削除すると、問題なく動作します。ローカル ディレクトリ以外のディレクトリから Java を実行できますか? これが dir 属性の機能だと思いました。