Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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#