Habe JDK installiert und versuche nun, über javac zu kompilieren.
Das funktioniert sogar ohne Fehlermeldung.
Aber beim Ausführen mit "java [Name des Progs]" erscheint immer folgende Fehlermeldung:
serendip@serendip-pc:~/java$ javac Fakultaet.java
serendip@serendip-pc:~/java$ java Fakultaet
Exception in thread "main" java.lang.NoClassDefFoundError: Fakultaet
at gnu.java.lang.MainThread.run(libgcj.so.70)
Caused by: java.lang.ClassNotFoundException: Fakultaet not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:/home/serendip/java/AlgoTools.jar], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
at java.net.URLClassLoader.findClass(libgcj.so.70)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.70)
at java.lang.ClassLoader.loadClass(libgcj.so.70)
at java.lang.ClassLoader.loadClass(libgcj.so.70)
at gnu.java.lang.MainThread.run(libgcj.so.70)
Nachfolgend der source code.
Ich habe die Datei eher zufällig von "http://www-lehre.inf.uos.de/~ainf/2006/Vorlesung/Fakultaet.java" heruntergeladen.
Da ich einfach probieren wollte, wie JAVA eigentlich kompiliert wird.
AlgoTools hatte ich auch importiert durch:
serendip@serendip-pc:~/java$ CLASSPATH=/home/serendip/java/AlgoTools.jar
serendip@serendip-pc:~/java$ echo $CLASSPATH
/home/serendip/java/AlgoTools.jar
serendip@serendip-pc:~/java$ cat Fakultaet.java
Code:
/*************************** Fakultaet.java *********************************/
import AlgoTools.IO;
/** Berechnung der Fakultaet mit for-, while- und do-while-Schleifen
*
* n! := 1 fuer n=0,
* 1*2*3* ... *n sonst
*
*/
public class Fakultaet {
public static void main (String [] argv) {
int i, n, fakultaet; // 3 Integer-Variablen
n = IO.readInt("Bitte Zahl: "); // fordere Zahl an
fakultaet = 1; // berechne n! mit for-Schleife
for (i = 1; i <= n; i++)
fakultaet = fakultaet * i;
IO.println(n + " ! = " + fakultaet);
fakultaet = 1; // berechne n! mit while-Schleife
i = 1;
while (i <= n) {
fakultaet = fakultaet * i;
i++;
}
IO.println(n + " ! = " + fakultaet);
fakultaet = 1; // berechne n! mit do-while-Schleife
i = 1;
do {
fakultaet = fakultaet * i;
i++;
} while (i <= n);
IO.println(n + " ! = " + fakultaet);
}
}
dein Classpath muss
CLASSPATH=.:/home/serendip/java/AlgoTools.jar
heißen
der Punkt . am Anfang steht für das aktuelle Verzeichnis,
der Doppelpunkt : als Trennung zu anderen Elementen des Classpaths (unter Windows Semikolon ; )
Aber die anderen Teile der Fehlermeldung bleiben bestehen.
Hilfe!!!
serendip@serendip-pc:~/java$ ls
AlgoTools.jar Fakultaet.java
serendip@serendip-pc:~/java$ CLASSPATH=.:/home/serendip/java/AlgoTools.jar
serendip@serendip-pc:~/java$ javac Fakultaet.java
serendip@serendip-pc:~/java$ java Fakultaet
Exception in thread "main" java.lang.ClassFormatError: Fakultaet (unrecognized class file version)
at java.lang.VMClassLoader.defineClass(libgcj.so.70)
at java.lang.ClassLoader.defineClass(libgcj.so.70)
at java.security.SecureClassLoader.defineClass(libgcj.so.70)
at java.net.URLClassLoader.findClass(libgcj.so.70)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.70)
at java.lang.ClassLoader.loadClass(libgcj.so.70)
at java.lang.ClassLoader.loadClass(libgcj.so.70)
at gnu.java.lang.MainThread.run(libgcj.so.70)
serendip@serendip-pc:~/java$
Ich habe scheinbar mehrere Versionen installiert, wovon die 1.4.2 aktiviert war.
Daraufhin habe ich jetztüber update-alternatives die 1.5 Version aktiviert.
Daraufhin wurden die Fehlermeldungen jetzt wieder ein bißchen umfangreicher.
Was ist bloß hier los???
root@serendip-pc:/home/serendip/java# java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 (Ubuntu 4.1.2-0ubuntu5)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
root@serendip-pc:/home/serendip/java# update-alternatives --config java
Press enter to keep the default[*], or type selection number: 4
Using `/usr/lib/jvm/java-1.5.0-sun/jre/bin/java' to provide `java'.
root@serendip-pc:/home/serendip/java# java -version
java version "1.5.0_11"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode, sharing)
root@serendip-pc:/home/serendip/java# java Fakultaet
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
root@serendip-pc:/home/serendip/java#
serendip@serendip-pc:~/java$ java Fakultaet
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
Selection Alternative
-----------------------------------------------
*+ 1 /usr/lib/jvm/java-6-sun/bin/javac
2 /usr/lib/jvm/java-1.5.0-sun/bin/javac
Press enter to keep the default[*], or type selection number: 2
Using `/usr/lib/jvm/java-1.5.0-sun/bin/javac' to provide `javac'.
root@serendip-pc:/home/serendip/java# javac Fakultaet.java
root@serendip-pc:/home/serendip/java# java Fakultaet
Bitte Zahl: 5
5 ! = 120
5 ! = 120
5 ! = 120
root@serendip-pc:/home/serendip/java#