2011-08-12 5 views
2

jvmtiのドキュメント全体を読み込もうとしましたが、私の問題の解決策が見つかりませんでした。 >私は< calledJavaProgramの名前を取得したい大文字でJVMTIはクラス/ファイルと呼ばれる名前を取得します

java -agentpath:<pathToAgent> <calledJavaProgram> 

は私がプログラムを呼び出すには、コマンドラインで使用されるクラス/ファイルの名前を取得したいです。

GetSourceFileName(jclass klass、...)は、パラメータリストに設定されている "klass"の名前だけを取得しますが、私はプログラムを開始して以来、

この名前を取得するには(他の)方法はありますか?

あなたの助けのためのThxを マーカスG.

+0

私は、JNI.hが、エージェントを持つ新しいJVMを作成するために使用されるJavaVMInitArgsという構造体を提供していることを理解しました。しかし、私はエージェントを始めた現在の実行中のJVMについて、その情報を正確に取得する必要があります。 –

答えて

0

JNI文書によると、JavaVMInitArgs構造体は、ネイティブコードから新しい仮想マシンを作成するためのものですので、私はそれは赤いニシンだと思います。 AFAIKでは、JVMTIまたはJavaのコマンドライン引数にAPIアクセスがありません。

あなたはmainメソッドを持つクラスの名前を見つけるために何ができるいくつかのものがあります。

  1. 使用JNI works it out Javaメソッドをコールするには。
  2. BCIを使用してすべてのメインメソッドを変更し、エージェントへのJNIコールバックを行います。最初に呼び出されるコールバックが必要なものです。これにより、args[]アレイを取得することもできます。
関連する問題