2016-04-07 11 views
0

Ich versuche, JAR-Datei (aus Spacewalk-Projekt) zu instrumentieren, damit ich Code-Coverage von mir messen kann Tests, aber es versagt:cobertura-instrument.sh versäumt es, JAR-Datei mit java.lang.NoClassDefFoundError zu instrumentieren: net.sourceforge.cobertura.instrument.InstrumentMain

# /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. 

ich versucht habe, eine zufällige Klasse zu schaffen (im Idealzustand mag ich Instrument, um alle von ihnen) aus diesem Glas als gut, aber mit dem gleichen Ergebnis:

# 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 

Ich bin mir ziemlich sicher, dass ich gerade etwas vermisse, was es mir zu sagen versucht.

Ich verwende cobertura-2.1.1 von Sourceforge heruntergeladen und in /opt extrahiert, auf Red Hat Enterprise Linux 6.

Antwort

0

OK, das war einfach:

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

es auch fehlt Bash Shebang (#!/bin/bash), so dass Sie es möglicherweise an den Anfang der Datei hinzufügen müssen (ich weiß nicht, warum es für mich auch ohne das funktionierte).