尝试 JCov java 覆盖实用程序时遇到错误

Encountered error while trying JCov java coverage utility

互联网上几乎所有地方都有这些基本步骤:

• 照常编译 java 个文件

 javac <source-files>

• “Instrument”字节码

 java -jar jcov.jar Instr <application classes> 

• 运行 代码

 java -classpath ...:jcov_file_saver.jar ... 

• 创建报告

 java -jar jcov.jar RepGen <jcov xml file> demo 

我能够检测 class 文件和 jar 文件,但不能 运行 jar 文件。

遇到此错误:

$ java -cp .:$JCOV/jcov_file_saver.jar -jar BubbleSort.jar
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tdk/jcov/runtime/Collect
    at BubbleSort.main(BubbleSort.java:49)
Caused by: java.lang.ClassNotFoundException: com.sun.tdk.jcov.runtime.Collect
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

)

任何人都可以帮助我或引导我到一些我可以理解的网页吗?

您还需要提供 jcov.jar 文件,因为它包含 com/sun/tdk/jcov/runtime/Collect class.

要在 运行 时提供 jcov.jar,运行 这个

java -cp .:$JCOV/jcov_file_saver.jar -Xbootclasspath/a:$JCOV/jcov.jar -jar BubbleSort.jar

由于 sumedh 的回答促使我了解各种类路径,因此使用它解决了所面临的问题。 执行检测 jar:

java -cp . -Xbootclasspath/a:$JCOV/jcov_file_saver.jar -jar BubbleSort.jar