有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在ant的另一个目录中运行java时出错

我在包客户机中有一个简单的类FabricClient,它带有一个公共静态void main()。此包位于我的项目的“bin”目录中。从bin目录,在命令行上,我可以执行此类中的main,如下所示:

user@sys /c/projects/myproject/bin
$ java -classpath .;c:\dir\my.jar client.FabricClient

我想执行我的ant构建。来自父目录(/c/projects/myproject)的xml文件,我在其中手动运行java命令。我尝试使用dir属性,如下所示:

  <target name="run-client">
    <java classname="client.FabricClient"
        classpath="${classpath}"
        fork="true"
        failonerror="true"
        dir="./bin">
     </java>          
  </target>

My classpath变量既有当前目录,也有My的目录。命令行上使用的jar(编译类的ant命令可以很好地使用相同的变量)

以下是用于生成类路径的设置

  <property name="my.jar" location="c:\dir\my.jar" />
  <property name="classpath" location=".:${my.jar}:." />

我得到了典型的java。lang.NoClassDefFound错误:客户端/FabricClient

我使用的是Ant 1.7.0版

如果我移动构建。将xml文件放入bin并删除dir属性,效果良好。可以从本地目录以外的目录运行java吗?我以为dir属性就是这么做的


共 (2) 个答案

  1. # 1 楼答案

    您的类路径应该包含文件my。jar,而不是我的。罐子是

  2. # 2 楼答案

    ant中的路径通常如下所示:

    <java classname="client.FabricClient"
        fork="true"
        failonerror="true"
        dir="./bin">
        <classpath>
             <pathelement location="C:/dir/my.jar"/>        
        </classpath>
    

    它更具可读性和可靠性