我在包客户端中有一个简单的类 FabricClient,它带有一个公共静态 void main()。这个包位于我项目的“bin”目录中。从 bin 目录,在命令行中,我可以执行这个类中的 main 如下:
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 属性所做的。