gpt4 book ai didi

java - 让classmexer和ant协同工作

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:25 28 4
gpt4 key购买 nike

我们正在开发一个 java 项目,我们使用 ant 来构建和运行该程序。现在我们正在做一些性能测试,我们想使用 classmexer 。问题是我们无法让 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>

但它不起作用。运行时程序抛出以下异常

java.lang.IllegalStateException: Agent not initted
at com.javamex.classmexer.Agent.getInstrumentation(Agent.java:33)
at com.javamex.classmexer.MemoryUtil.deepMemoryUsageOf(MemoryUtil.java:104)
at com.javamex.classmexer.MemoryUtil.deepMemoryUsageOf(MemoryUtil.java:80)
at output_archive.test.provaJDOM.main(provaJDOM.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.sun.star.lib.loader.Loader.main(Loader.java:141)

当调用MemoryUtil.deepMemoryUsageOf(Object)

看来这不是将参数传递给 jvm 的正确方法,但我们不知道该怎么做。

谢谢你的帮助:)

最佳答案

我认为您可能成功传递了 JVM arg - 您可以尝试使用 -verbose 运行 ant 进行确认。但问题似乎很可能是与 jar 属性的使用有关。

据 Ant java task docs ( see also ):

When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored.

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

另一点:jvmargs 属性已弃用 - 您应该使用嵌套的 jvmarg 元素。

您可能会考虑的一种方法是将应用程序 jar 添加到类路径(以及 classmexer.jar),并直接调用 jar list 中指定的主类。像这样的事情:

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

关于java - 让classmexer和ant协同工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6966396/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com