【问题标题】:Encountered error while trying JCov java coverage utility尝试 JCov java 覆盖实用程序时遇到错误
【发布时间】:2016-12-20 12:25:28
【问题描述】:

在 INTERNET 中几乎所有地方都有这些基本步骤:

• 照常编译java文件

 javac <source-files>

• “检测”字节码

 java -jar jcov.jar Instr <application classes> 

• 运行代码

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

• 创建报告

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

我能够同时检测类文件和 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

)

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

【问题讨论】:

    标签: java code-coverage test-coverage


    【解决方案1】:

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

    要在运行时提供 jcov.jar,请运行此

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

    【讨论】:

    • 它确实帮助我成功执行了 jar,但它并没有实现它的真正目的。它应该生成一个只能用 jcov_file_saver.jar 实现的文件。而且我在这个 jar 中检查了它是否有指定的类,所以,我在 bootclasspath 中指定了它并且它有效。你能解释一下为什么它现在起作用而不是以前吗?
    • 它现在工作的原因是因为它需要您在 Xbootclasspath 中提供的 jcov.jar 中的 Collect 类。您能否将此问题标记为已回答,因为您的初始错误已得到解决。为其他查询打开一个新问题。
    • 对不起,但它并没有得到解决,而是我不得不在引导类路径中传递“jcov_file_saver.jar”以使其正常工作。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 2020-05-09
      相关资源
      最近更新 更多