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

所以也许其中一个有用?祝你好运!

顺便说一句,这就是我使用 JDI 的目的:

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

如果您想查看它,我正在使源可共享(尽管我不能 100% 确定它是否有用)。

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