Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';这些Ant/JVM参数有什么问题?_Java_Ant_Jvm Arguments - Fatal编程技术网

Java 什么';这些Ant/JVM参数有什么问题?

Java 什么';这些Ant/JVM参数有什么问题?,java,ant,jvm-arguments,Java,Ant,Jvm Arguments,我正在尝试从Ant构建文件运行。通常我从命令行运行它,如下所示: java -Xmx512m -jar /home/myuser/jars/tattletale.jar /home/myuser/projects/lib /home/myuser/tmp/tt 其中/home/myuser/projects/src是我所有JAR所在的源目录,而/home/myuser/tmp/tt是我放置所有TattleTale报告的输出目录 在Ant构建文件中,我使用了以下内容: <echo mess

我正在尝试从Ant构建文件运行。通常我从命令行运行它,如下所示:

java -Xmx512m -jar /home/myuser/jars/tattletale.jar /home/myuser/projects/lib /home/myuser/tmp/tt
其中
/home/myuser/projects/src
是我所有JAR所在的源目录,而
/home/myuser/tmp/tt
是我放置所有TattleTale报告的输出目录

在Ant构建文件中,我使用了以下内容:

<echo message="Running tattle-tale..."/>
<java fork="true" failonerror="true" jar="/home/myuser/jars/tattletale.jar">
    <arg value="Xmx512m"/>
    <arg value="/home/myuser/projects/lib"/>
    <arg value="/home/myuser/tmp/tt"/>
</java>

当我转到
/home/myuser/tmp/tt
时,我看不到任何输出,但是Ant输出显示
成功
,没有错误或警告。我的
看起来正确吗?如果不正确,我应该如何更改它们?如果它们看起来确实正确,我可以做什么来调试?提前谢谢

第一个参数是JVM参数而不是程序参数,因此
语法错误。对于这种情况,更容易使用
java
任务的
maxmemory
参数

因此,删除第一个
并将
maxmemory=512m
放入
块。

两件事:

  • 在运行Ant时尝试使用debug选项,并将输出保存到日志文件中。然后查看日志文件。它将向您展示它是如何执行Java命令的。这将帮助您找出Ant
    与直接从命令行运行Java的不同之处。它将使您能够tweek您的
    任务

  • 当参数用于
    java
    命令本身时,使用
    而不是

  • 例如:

    <echo message="Running tattle-tale..."/>
    <java fork="true"
        failonerror="true"
        jar="/home/myuser/jars/tattletale.jar">
        <jvmarg value="-Xmx512m"/>  <!-- Note the dash! -->
        <arg value="/home/myuser/projects/lib"/>
        <arg value="/home/myuser/tmp/tt"/>
    </java>
    
    
    

    如果您使用的是Unix/Linux,请尝试使用
    ant-d | tee ant.out
    。在Windows上,您必须执行
    ant-d>ant.out.txt
    ,这将在
    ant.out.txt
    中保存输出,但在运行
    ant
    时不会显示输出。

    如果在目标目录中没有看到输出,可能是因为1)给定的输入目录中没有存档,或者2)tattletale进程失败。 在失败或异常的情况下,tattletale进程似乎返回退出代码
    0
    ,它使ant相信进程执行成功

    对于调试,我建议您 确保给定的目录正确且具有java存档(jar)文件,并分析由
    tattletale
    产生的标准输出/错误

    例如:

    <echo message="Running tattle-tale..."/>
    <java fork="true"
        failonerror="false" 
        errorproperty="errorproperty"
        outputproperty="outputproperty"
        jar="/home/myuser/jars/tattletale.jar">
        <jvmarg value="-Xmx512m"/>  <!-- Note the dash! -->
        <arg value="/home/myuser/projects/lib"/>
        <arg value="/home/myuser/tmp/tt"/>
    </java>
    <echo message="stdout>> ${outputproperty}"/>
    <echo message="stderr>> ${errorproperty}" /> 
    
    
    
    注意:-
    failonerror
    暂时为false,仅用于调试目的。

    谢谢@Mike Q(+1)-但我仍然没有看到在输出目录中生成任何内容。
    <echo message="Running tattle-tale..."/>
    <java fork="true"
        failonerror="false" 
        errorproperty="errorproperty"
        outputproperty="outputproperty"
        jar="/home/myuser/jars/tattletale.jar">
        <jvmarg value="-Xmx512m"/>  <!-- Note the dash! -->
        <arg value="/home/myuser/projects/lib"/>
        <arg value="/home/myuser/tmp/tt"/>
    </java>
    <echo message="stdout>> ${outputproperty}"/>
    <echo message="stderr>> ${errorproperty}" />