4

サンプルアプリとして次のプログラムをコマンドラインで実行します。

java -cp "D:\projects\PDFJavaFX\lib\PDFRenderer-0.9.1.jar" com/sun/pdfview/PDFViewer

次に、コマンド ラインでJDI トレースの例を実行します。

java -cp "C:\Program Files\Java\jdk1.7.0_13\lib\tools.jar;D:\projects\JDI_Trace\jar\trace.jar; D:\projects\PDFJavaFX\lib\PDFRenderer-0.9.1 .jar "com/sun/tools/example/trace/Trace com/sun/pdfview/PDFViewer

次のエラーが表示されます。

Error: Could not find or load main class com.sun.pdfview.PDFViewer
 -- VM Started --
 -- The application exited --

サンプル アプリは正しく実行され、クラスパスに含まれています。これの原因は何ですか?私は何が欠けていますか?

ありがとう

4

2 に答える 2

1

編集:クラスパスに関連しているようです。

私はこれを機能させました(まあ、GUIをポップアップしましたが、すぐにクラッシュしました)。代わりにクラスパス環境変数を使用しました-cp

C:\cos126\dev\debug>set CLASSPATH=%CLASSPATH%;c:\tmp\PDFRenderer-0.9.1.jar;c:\tmp\debug

だから、きれいではありませんが、うまくいきました。そのため、新しく作成された VM は自動的に継承されないよう-cpです。私は楽観的ですが、確かではありませんが、新しい VM を起動するときに、これを行うために変更できるオプションがあるかもしれません。VM 起動オプションの「ドキュメント」を表示するには、次のようなコードを追加します。

for (Map.Entry<String, Connector.Argument> arg : arguments.entrySet()) {
   System.out.println(arg.getValue().name()+" "+arg.getValue().description());
}

Trace.java に。これを行うと、印刷されます

home Home directory of the SDK or runtime environment used to launch the application
options Launched VM options
main Main class and arguments, or if -jar is an option, the main jar file and arguments
suspend All threads will be suspended before execution of main
quote Character used to combine space-delimited text into a single command line argument
vmexec Name of the Java VM launcher

多分それらの1つが役に立ちますか?幸運を!

ちなみに、これは私がJDIを使用したものです:

http://cscircles.cemc.uwaterloo.ca/java-visualize/

もしあなたがそれを見たいなら、私はソースを共有できるようにする過程にいます (ただし、それが役に立つかどうかは 100% 確信が持てませんが)。

于 2013-06-04T23:36:47.433 に答える
0
于 2014-09-23T16:07:55.413 に答える