Java Classpath
-
- Beiträge: 3
- Registriert: 14.08.2009 22:18:35
Java Classpath
Hey,
ich weiß nicht mehr weiter. Habe die Pakete sun-java6-jre und sun-java6-jdk installiert, mittels aptitude. Und habe update-alternatives auf java gestellt. Meine /etc/profile sieht so aus:
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jv m/java-6-sun/jre/lib/
"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/jvm/java-6-sun/jre/lib/
"
fi
if [ "$PS1" ]; then
if [ "$BASH" ]; then
PS1='\u@\h:\w\$ '
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
export PATH
JAVA_HOME="/usr/lib/java:/usr/lib/mysql-connector-java-5.1.8"
export JAVA_HOME
CLASSPATH="/usr/lib/java:/usr/lib/mysql-connector-java-5.1.8:/usr/lib/jvm/java-6-sun/jre/lib/"
export CLASSPATH
umask 022
Habe also meinen Classpath ÜBERALL reingeschrieben. Ich habe überprüft, ob in diesem Pfad die jars zu finden sind, die man braucht (jsse.jar, rt.jar, usf). Sie sind dort. Und dennoch, wenn ich
java HalloWorld
eingebe, kommt
itwart@alleserv:~$ java HalloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HalloWorld
Caused by: java.lang.ClassNotFoundException: HalloWorld
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: HalloWorld. Program will exit.
Dieses. Was mache ich falsch?
Kai
ich weiß nicht mehr weiter. Habe die Pakete sun-java6-jre und sun-java6-jdk installiert, mittels aptitude. Und habe update-alternatives auf java gestellt. Meine /etc/profile sieht so aus:
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jv m/java-6-sun/jre/lib/
"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/jvm/java-6-sun/jre/lib/
"
fi
if [ "$PS1" ]; then
if [ "$BASH" ]; then
PS1='\u@\h:\w\$ '
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
export PATH
JAVA_HOME="/usr/lib/java:/usr/lib/mysql-connector-java-5.1.8"
export JAVA_HOME
CLASSPATH="/usr/lib/java:/usr/lib/mysql-connector-java-5.1.8:/usr/lib/jvm/java-6-sun/jre/lib/"
export CLASSPATH
umask 022
Habe also meinen Classpath ÜBERALL reingeschrieben. Ich habe überprüft, ob in diesem Pfad die jars zu finden sind, die man braucht (jsse.jar, rt.jar, usf). Sie sind dort. Und dennoch, wenn ich
java HalloWorld
eingebe, kommt
itwart@alleserv:~$ java HalloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HalloWorld
Caused by: java.lang.ClassNotFoundException: HalloWorld
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: HalloWorld. Program will exit.
Dieses. Was mache ich falsch?
Kai
Re: Java Classpath
Den Classpath der JRE hat er...nur dein Programm findet er nicht. Packages angelegt? Dann muss auch die Ordnerstruktur so angelegt werden und dann zb (Im Ordner examples/hello/ liegt dann dein Programm in Bytecode vor)
Code: Alles auswählen
java examples.hello.HelloWorld
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
-
- Beiträge: 3
- Registriert: 14.08.2009 22:18:35
Re: Java Classpath
Hey,
ja...also packages. Hm. Mein Programm liegt grad in /home/itwart/HalloWorld.class und der Code ist;
class HalloWorld {
public static void main(String[] args) {
String message="Hallo World!";
System.out.println(message);
}
}
Was müsste ich modifizieren?
Twerp
ja...also packages. Hm. Mein Programm liegt grad in /home/itwart/HalloWorld.class und der Code ist;
class HalloWorld {
public static void main(String[] args) {
String message="Hallo World!";
System.out.println(message);
}
}
Was müsste ich modifizieren?
Twerp
Re: Java Classpath
Bei mir funktioniert das so wunderbar:
cd /home/itwart/
Code in die Datei HalloWorld.java packen
javac HalloWorld.java
(dadurch wird die HalloWorld.class-Datei erzeugt - das Programm wird in Java-Bytecode umgewandelt)
java HalloWorld
cd /home/itwart/
Code in die Datei HalloWorld.java packen
javac HalloWorld.java
(dadurch wird die HalloWorld.class-Datei erzeugt - das Programm wird in Java-Bytecode umgewandelt)
java HalloWorld
Re: Java Classpath
Das funktioniert aber nur, wenn im Classpath "." steht. Und da LimpingTwerp den überschrieben hat und . nicht drinsteht, geht es bei ihm auch nicht.
Erweitere also den Classpath um . und dann könnte es schon gehen.
Außerdem ist es so oder so "schöner" mit .jar Dateien zu arbeiten....
Gruß
Erweitere also den Classpath um . und dann könnte es schon gehen.
Außerdem ist es so oder so "schöner" mit .jar Dateien zu arbeiten....
Gruß
Re: Java Classpath
Ups, habe ich übersehen.michaels hat geschrieben:Das funktioniert aber nur, wenn im Classpath "." steht. Und da LimpingTwerp den überschrieben hat und . nicht drinsteht, geht es bei ihm auch nicht.
Erweitere also den Classpath um . und dann könnte es schon gehen.
Außerdem ist es so oder so "schöner" mit .jar Dateien zu arbeiten....
Gruß
-
- Beiträge: 3
- Registriert: 14.08.2009 22:18:35
Re: Java Classpath
Hey michaels,
das hat funktioniert. Ich habe den classpath nicht überschrieben - den hats vorher gar nicht gegeben. Wie meintest du das mit den jars? Ich kann doch nicht ständig alle jars zusammensuchen, oder meintest du das anders?
Twerp
das hat funktioniert. Ich habe den classpath nicht überschrieben - den hats vorher gar nicht gegeben. Wie meintest du das mit den jars? Ich kann doch nicht ständig alle jars zusammensuchen, oder meintest du das anders?
Twerp
Re: Java Classpath
Super, das es jetzt geht.
Naja, aus den Java .class Dateien erstellt man normalerweise eine .jar Datei. In der gibt es dann wieder eine Manifest-Datei, in der solche Sachen wie weitere .jar-Dateien, Main-Klasse usw. angegeben werden. Dann hat der User später nicht solche Probleme...
Die benötigten .jar Dateien werden dann normalerweise in einem Unterordner "lib" gepackt und dann relativ in der Manifest-Datei angegeben.
Das machen die heutigen IDEs meines Wissens aber auch automatisch. Ich selbst nutze NetBeans als IDE und dort werden alle vom Projekt genutzten jar-Dateien automatisch in das lib Verzeichnis gepackt und eine entsprechende Manifest Datei erstellt, sodass man dann eine ausführbare jar Datei hat. Die kann man dann einfach Doppelklicken oder mit "java -jar deine.jar" aufrufen.
Gruß
Naja, aus den Java .class Dateien erstellt man normalerweise eine .jar Datei. In der gibt es dann wieder eine Manifest-Datei, in der solche Sachen wie weitere .jar-Dateien, Main-Klasse usw. angegeben werden. Dann hat der User später nicht solche Probleme...
Die benötigten .jar Dateien werden dann normalerweise in einem Unterordner "lib" gepackt und dann relativ in der Manifest-Datei angegeben.
Das machen die heutigen IDEs meines Wissens aber auch automatisch. Ich selbst nutze NetBeans als IDE und dort werden alle vom Projekt genutzten jar-Dateien automatisch in das lib Verzeichnis gepackt und eine entsprechende Manifest Datei erstellt, sodass man dann eine ausführbare jar Datei hat. Die kann man dann einfach Doppelklicken oder mit "java -jar deine.jar" aufrufen.
Gruß