java – 无法运行JDI跟踪示例:错误:无法找到或加载主类

我在命令行中运行以下程序作为示例应用程序:

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

然后我在命令行中运行JDI trace示例:

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

示例应用程序正确运行,它包含在类路径中.
这是什么原因?
我错过了什么?

谢谢

解决方法:

编辑:看起来它与类路径相关.

我确实让它工作了(好吧,它弹出了GUI但很快就崩溃了).我使用了classpath环境变量而不是-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%肯定它将是有用的).

上一篇:Ant可以同时启动两个java应用程序吗?


下一篇:mac os mysql 5.7.25 安装教程