【问题标题】:cobertura-instrument.sh fails to instrument jar file with java.lang.NoClassDefFoundError: net.sourceforge.cobertura.instrument.InstrumentMaincobertura-instrument.sh 无法使用 java.lang.NoClassDefFoundError 检测 jar 文件:net.sourceforge.cobertura.instrument.InstrumentMain
【发布时间】:2016-07-28 10:32:07
【问题描述】:

我正在尝试检测 jar 文件(来自 Spacewalk 项目),以便测量我的测试的代码覆盖率,但它失败了:

# /opt/cobertura-2.1.1/cobertura-instrument.sh --datafile /tmp/out /usr/share/rhn/lib/rhn.jar
Exception in thread "main" java.lang.NoClassDefFoundError: net.sourceforge.cobertura.instrument.InstrumentMain
Caused by: java.lang.ClassNotFoundException: net.sourceforge.cobertura.instrument.InstrumentMain
    at java.net.URLClassLoader.findClass(URLClassLoader.java:432)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:676)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:358)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:642)
Could not find the main class: net.sourceforge.cobertura.instrument.InstrumentMain.  Program will exit.

我也尝试从该 jar 中提供一个随机类(在理想状态下我想检测所有这些类),但结果相同:

# jar tf rhn.jar | tail
org/cobbler/CobblerConnection.class
[...]
# /opt/cobertura-2.1.1/cobertura-instrument.sh --datafile /tmp/out /usr/share/rhn/lib/rhn.jar org.cobbler.CobblerConnection

我很确定我只是错过了它试图告诉我的东西。

我正在使用从 SourceForge 下载并解压缩到 /opt 中的 cobertura-2.1.1,在 Red Hat Enterprise Linux 6 上运行。

【问题讨论】:

    标签: java code-coverage cobertura


    【解决方案1】:

    好的,这很简单:

    # dos2unix /opt/cobertura-2.1.1/cobertura-instrument.sh
    

    它也缺少 bash shebang (#!/bin/bash),因此您可能需要将其添加到文件的开头(即使没有它,我也不知道为什么它对我有用)。

    【讨论】:

      猜你喜欢
      • 2014-06-16
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      相关资源
      最近更新 更多