java - 这些 Ant/JVM args 有什么问题?

标签 java ant jvm-arguments

我正在尝试运行 JBoss TattleTale来自 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>

当我从命令行运行这个目标时:

run-tattletale:
    [echo] Running tattle-tale...

BUILD SUCCESSFUL
Total time: 3 seconds

当我去 /home/myuser/tmp/tt我没有看到任何输出,但是 Ant 输出显示 SUCCESS没有错误或警告。做我的 <arg>看起来正确,如果不正确,我应该如何更改它们?如果它们看起来确实正确,我该如何调试?提前致谢!

最佳答案

两件事:

  1. 尝试在运行 Ant 时使用调试选项,并将输出保存到日志文件中。然后查看日志文件。它将向您展示它是如何执行 Java 命令的。这将帮助您找出 Ant <java> 的位置。不同于直接从命令行运行 Java 的方式。它会让您能够调整您的 <java>任务。

  2. 当参数用于 java 时命令本身,你使用 <jvmarg>而不是 <arg> :

一个例子:

<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>

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

关于java - 这些 Ant/JVM args 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12883877/

相关文章:

java - NewRatio 参数不适用于 CMS 垃圾收集器

java - 设置 JDialog block Observer 的模态

Java - 反射如何找到枚举类型

java - 由于多个 Java 错误,无法编译自动生成的 JOOQ 代码

java - 如何使用 Ant 将整个 lib 目录(包括所有子目录)放在类路径中?

ant - 如何部署使用 maven-antrun-plugin 创建的 zip 文件?

java - 在 log4j.properties 文件中设置 jvmargs

java - Java如何模拟字符串输入?

java - wtf.is.going.on 中的抽象方法foo(E) 无法直接访问super.foo(e) 用ANT 编译

java - 尝试设置JVM标志时Java运行时崩溃