Java 让classmexer和ant一起工作

Java 让classmexer和ant一起工作,java,ant,profiling,memory-management,Java,Ant,Profiling,Memory Management,我们正在进行一个java项目,我们使用ant来构建和运行这个程序。现在我们正在做一些性能测试,我们想使用。问题是我们不能让ant和classmexer一起工作 因为有必要将参数传递给jvm -javaagent:classmexer.jar 我们在build.xml中尝试了以下内容 <target name="run" description="Try running it." depends="all"> <java jvmargs="-javaagent:clas

我们正在进行一个java项目,我们使用ant来构建和运行这个程序。现在我们正在做一些性能测试,我们想使用。问题是我们不能让ant和classmexer一起工作

因为有必要将参数传递给jvm

-javaagent:classmexer.jar
我们在build.xml中尝试了以下内容

<target name="run" description="Try running it." depends="all">
    <java jvmargs="-javaagent:classmexer.jar" jar="${OUT_DIR}/${FILE_NAME}.jar" failonerror="true" fork="true">
    </java>
</target>
调用
MemoryUtil.deepMemoryUsageOf(对象)

因此,这似乎不是将参数传递给jvm的正确方法,但我们不知道该怎么做

感谢您的帮助:)

我认为您可能成功地传递了JVM参数-您可以尝试使用
-verbose运行ant来确认。不过,问题似乎在于
jar
属性的使用

根据蚂蚁()的说法:

使用此选项时,JAR文件是所有用户的源文件 类和其他用户类路径设置将被忽略

因此,您必须确保classmexer.jar类包含在应用程序jar中才能找到它们

还有一点:不推荐使用
jvmargs
属性-应该使用嵌套的
jvmarg
元素

一种方法,您可以考虑将应用程序jar添加到类路径(以及CaseMexel.jar)中,并直接调用JAR清单中指定的主类。大概是这样的:

<java classname="...YourMainClass" failonerror="true" fork="true">
    <jvmarg value="-javaagent:classmexer.jar" />
    <classpath>
        <!-- other stuff here maybe -->
        <pathelement location="path_to_classmexer/classmexer.jar" />
        <pathelement location="${OUT_DIR}/${FILE_NAME}.jar" />
    </classpath>
</java>

我认为您可能成功地传递了JVM参数-您可以尝试使用
-verbose运行ant来确认。不过,问题似乎在于
jar
属性的使用

根据蚂蚁()的说法:

使用此选项时,JAR文件是所有用户的源文件 类和其他用户类路径设置将被忽略

因此,您必须确保classmexer.jar类包含在应用程序jar中才能找到它们

还有一点:不推荐使用
jvmargs
属性-应该使用嵌套的
jvmarg
元素

一种方法,您可以考虑将应用程序jar添加到类路径(以及CaseMexel.jar)中,并直接调用JAR清单中指定的主类。大概是这样的:

<java classname="...YourMainClass" failonerror="true" fork="true">
    <jvmarg value="-javaagent:classmexer.jar" />
    <classpath>
        <!-- other stuff here maybe -->
        <pathelement location="path_to_classmexer/classmexer.jar" />
        <pathelement location="${OUT_DIR}/${FILE_NAME}.jar" />
    </classpath>
</java>


感谢您对答案的清晰评论。然而,它还不起作用。也许OpenOffice发生了一些奇怪的事情。。。这个项目是关于编写OpenOffice扩展的,所以我们的代码是由OpenOffice本身加载的,也许它忽略了传递给jvm的参数,并且(希望)有另一种方法来处理这个问题。无论如何,非常感谢:-)谢谢你清晰的回答。然而,它还不起作用。也许OpenOffice发生了一些奇怪的事情。。。这个项目是关于编写OpenOffice扩展的,所以我们的代码是由OpenOffice本身加载的,也许它忽略了传递给jvm的参数,并且(希望)有另一种方法来处理这个问题。无论如何,非常感谢:-)