我在命令行中运行以下程序作为示例应用程序:
java -cp “D:\projects\PDFJavaFX\lib\PDFRenderer-0.9.1.jar”
com/sun/pdfview/PDFViewer
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%肯定它将是有用的).