Hilfe bei Benutzung von *.jar bei Compiler
kieselnator
- java
1 mrjerk0 kieselnator0 mrjerk0 kieselnator0 mrjerk0 kieselnator0 mrjerk0 kieselnator0 mrjerk
Hallo zusammen!
Ich hab die Aufgabe bekommen, ein Test eines Programms (Quelltext unten) laufen zu lassen.
Dafür sollte ich mir von einer Seite (http://github.com/KentBeck/junit/downloads) Die Datei junit4.8.2.jar herunterladen und im Lib-Ordner meines Java-Compiler ablegen.
Ich soll jetzt dafür sorgen, dass mein Compiler diese Datei benutzen kann.
Als ich ds Programm jetzt in der Cmd gestartet hab, wurden mit allerdings sehr viele Fehler(auch unten...) angezeigt, die darauf hinauswollen, dass verwendete Funktionen nicht bekannt sind. Die sind allerdings in dieser Bibliothek.
Wie kann ich dafür sorgen dass der Compiler die Datei nutzen kann?
mfg Kiesel Stein
PS: DANKEEEE!
Quellcode:
import static org.junit.Assert.*;
import org.junit.*;
public class MathLib {
@Test public void testSqrt1() {
double d = sqrt(4);
assertEquals("sqrt(4) should be 2",2.0,d,1e-15);
}
@Test public void testSqrt2() {
double d = sqrt(9);
assertEquals("sqrt(9) should be 3",3.0,d,1e-15);
}
@Test public void testSqrt3() {
double d = sqrt(-1);
assertEquals("sqrt(-1) should be NaN",Double.NaN,d,1e-15);
}
@Test public void testAbs1() {
double t = abs(2);
assertEquals("abs(2) should be 2", 2.0, t,1e-15);
}
@Test public void testAbs2() {
double t = abs(0);
assertEquals("abs(0) should be 0", 0.0, t,1e-15);
}
@Test public void testAbs3() {
double t = abs(-3);
assertEquals("abs(-3) should be 3", 3.0, t,1e-15);
}
@Test public void testAbs4() {
double t = abs(Double.NaN);
assertEquals("abs(NaN) should be NaN", Double.NaN, t,1e-15);
}
public static double abs(double a) {
// if (a < 0) return -a;
// else return a;
return a>=0 ? a : -a;
}
public static double sqrt(int input) {
if (input < 0) return Double.NaN;
double epsilon = 1e-15;
double c = (double) input;
double t = c;
while (abs(t-c/t) > t*epsilon) {
t = (c/t + t) / 2.0;
}
return t;
}
}
die Fehler:
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:1: package org.junit does
import static org.junit.Assert.*;
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:2: package org.junit does
import org.junit.*;
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:7: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testSqrt1() {
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:13: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testSqrt2() {
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:18: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testSqrt3() {
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:24: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testAbs1() {
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:29: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testAbs2() {
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:34: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testAbs3() {
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:39: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testAbs4() {
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:9: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("sqrt(4) should be 2",2.0,d,1e-15);
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:15: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("sqrt(9) should be 3",3.0,d,1e-15);
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:20: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("sqrt(-1) should be NaN",Double.NaN,d,1e-15);
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:26: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("abs(2) should be 2", 2.0, t,1e-15);
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:31: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("abs(0) should be 0", 0.0, t,1e-15);
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:36: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("abs(-3) should be 3", 3.0, t,1e-15);
^
C:\Users\Kriegel\Desktop\hhu\Vorlesung\Beispiele\05\MathLib.java:41: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("abs(NaN) should be NaN", Double.NaN, t,1e-15);
^
16 errors
Hallo,
Wie kann ich dafür sorgen dass der Compiler die Datei nutzen kann?
Du kannst mal versuchen, die JVM mit
java -classpath c:\pfad\zu\Junit-jar\junit4.8.2.jar
zu starten.
Viele Grüße,
Jörg
PS: Da das offenbar Teil einer Java-Einsteiger-Vorlesung ist, erwähn ichs mal: Das was Du meinst ist die virtuelle Maschine (JVM), nicht der Java-Compiler! Der Java-Compiler ("javac") baut Dir aus *.java-Dateien den für die JVM ausführbaren Code, die JVM ("java") führt den Code nur aus, compiliert aber dabei nix. Ist ein grundleger Unterschied, der für Prüfungen o.ä. evtl. ziemlich wichtig ist.
Und wie vermeide ich dann diesen Fehlerhagel, dass es diese Funktionene nicht gibt?
Hallo,
Und wie vermeide ich dann diesen Fehlerhagel, dass es diese Funktionene nicht gibt?
Wie gesagt, die Angabe des Classpathes sollte eigentlich reichen:
Das JAR-File muss in einem Verzeichnis liegen, welches der JVM in irgendeiner Weise bekannt ist.
Das kann:
Mehr Details zum Thema Classpath findest Du hier
Hoffe, das hilft Dir weiter.
Viele Grüße,
Jörg
Na schön, hier nochmal die Fehler!
MathLib.java:1: package org.junit does not exist
import static org.junit.Assert.*;
^
MathLib.java:2: package org.junit does not exist
import org.junit.*;
^
MathLib.java:7: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testSqrt1() {
^
MathLib.java:13: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testSqrt2() {
^
MathLib.java:18: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testSqrt3() {
^
MathLib.java:24: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testAbs1() {
^
MathLib.java:29: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testAbs2() {
^
MathLib.java:34: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testAbs3() {
^
MathLib.java:39: cannot find symbol
symbol : class Test
location: class MathLib
@Test public void testAbs4() {
^
MathLib.java:9: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("sqrt(4) should be 2",2.0,d,1e-15);
^
MathLib.java:15: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("sqrt(9) should be 3",3.0,d,1e-15);
^
MathLib.java:20: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("sqrt(-1) should be NaN",Double.NaN,d,1e-15);
^
MathLib.java:26: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("abs(2) should be 2", 2.0, t,1e-15);
^
MathLib.java:31: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("abs(0) should be 0", 0.0, t,1e-15);
^
MathLib.java:36: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("abs(-3) should be 3", 3.0, t,1e-15);
^
MathLib.java:41: cannot find symbol
symbol : method assertEquals(java.lang.String,double,double,double)
location: class MathLib
assertEquals("abs(NaN) should be NaN", Double.NaN, t,1e-15);
^
16 errors
Das package existiert nicht, darum funzt es nicht.
Egal was ich auch probiert hab, das klappt einfach nicht.
beim -classpath attribut sagt er ja noch nix, aber dannnnn...
Hallo,
Das package existiert nicht, darum funzt es nicht.
Jo, offenbar zieht er das JAR-File noch nicht an.
Wie genau sieht der Aufruf Deines Programms in der JVM aus?
Viele Grüße,
Jörg
Hmmm!
Mal überlegen, wenn das Programm nicht kompiliert werden konnte, welche Klasse soll die Virtual Machine dann ausgeben?
Nüscht!
Fehler!
Error!
Moin,
Mal überlegen, wenn das Programm nicht kompiliert werden konnte, welche Klasse soll die Virtual Machine dann ausgeben?
Nun gut, wenn das compilieren fehlschlägt, wie sieht also der Aufruf des Compilers aus? Das Attribut "classpath" kannste ja auch da setzen:
javac -classpath C:\Pfad\Zu\Deinem\JarFile\JarFile.jar DeineJavaDatei
Viele Grüße,
Jörg
Wieder alle Fehler auf einmal...
Wieder alle Fehler auf einmal...
Also, ich habe mal gerade ein Java-Testprogramm gebaut:
TestMe.java:
import static org.junit.Assert.*;
import org.junit.*;
import org.junit.Test;
public class TestMe {
@Test public void testMe () {
assertEquals("Test", "Test");
}
}
JUnit hab ich runtergeladen und auf eine andere Platte geschoben (Linux-System, daher "/media/sdb5/")
javac -classpath /media/sdb5/junit-4.8.2.jar TestMe.java
funktioniert.
Das muss eigentlich schon so gehen. Ich habe hier OpenJDK (also nicht das Java von SUN), aber das müsste egal sein.