2011-08-06 18 views
1

私たちはJavaプロジェクトに取り組んでおり、antを使ってプログラムをビルドして実行しています。今私たちはいくつかのパフォーマンステストを行っており、classmexerを使いたかったのです。問題は、アリとクラスメイカーの仕事を一緒にすることができないということです。classmexerとantを連携させる

JVMに引数

-javaagent:classmexer.jar 

に合格する必要がありますので、私たちは

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

当社のbuild.xmlに次のように試してみましたが、それは動作しません。 MemoryUtil.deepMemoryUsageOf(Object)

呼び出されたときに は、実行時にプログラムは次の例外

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) 

をスローだから、これはJVMに引数を渡すための正しい方法ではないようですが、私たちは何を把握することはできませんする。

は助けてくれてありがとう:)

答えて

1

私はあなたがおそらくが正常にJVM引数を渡していると思います - あなたが確認するために-verboseでアリを実行してみてください可能性があります。しかし、問題はjar属性を使用していると思われます。 Antのjava task docssee also)によると

:このオプションを使用すると

、JARファイルには、すべてのユーザー クラスの源であり、他のユーザクラスパスの設定は無視されます。

したがって、classmexer.jarクラスがアプリケーションジャーナルに含まれていることを確認しておく必要があります。

他の1点:jvmargs属性は廃止予定です。代わりに、入れ子になったjvmarg要素を使用する必要があります。

アプリケーション・ジャーを(classmexer.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> 
+0

明確なコメントをいただきありがとうございます。しかし、それはまだ動作しません。おそらく、OpenOfficeで奇妙なことが起きているかもしれません...プロジェクトはOpenOffice拡張を書くことです.OpenOffice自体によってコードがロードされるため、おそらくjvmに渡された引数は無視され、これに対処する別の方法があります。 とにかく、ありがとうございます:-) –

関連する問題