Java Classpath

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
LimpingTwerp
Beiträge: 3
Registriert: 14.08.2009 22:18:35

Java Classpath

Beitrag von LimpingTwerp » 14.08.2009 22:44:31

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

Benutzeravatar
TRex
Moderator
Beiträge: 8364
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Java Classpath

Beitrag von TRex » 15.08.2009 09:11:50

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

Code: Alles auswählen

java examples.hello.HelloWorld
(Im Ordner examples/hello/ liegt dann dein Programm in Bytecode vor)
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

LimpingTwerp
Beiträge: 3
Registriert: 14.08.2009 22:18:35

Re: Java Classpath

Beitrag von LimpingTwerp » 15.08.2009 09:31:14

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

Benutzeravatar
ruwen
Beiträge: 389
Registriert: 06.04.2003 18:37:25

Re: Java Classpath

Beitrag von ruwen » 15.08.2009 13:35:42

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

michaels
Beiträge: 1164
Registriert: 29.03.2009 18:12:25

Re: Java Classpath

Beitrag von michaels » 15.08.2009 13:39:12

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ß

Benutzeravatar
ruwen
Beiträge: 389
Registriert: 06.04.2003 18:37:25

Re: Java Classpath

Beitrag von ruwen » 15.08.2009 14:13:24

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ß
Ups, habe ich übersehen. :D

LimpingTwerp
Beiträge: 3
Registriert: 14.08.2009 22:18:35

Re: Java Classpath

Beitrag von LimpingTwerp » 15.08.2009 14:25:02

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

michaels
Beiträge: 1164
Registriert: 29.03.2009 18:12:25

Re: Java Classpath

Beitrag von michaels » 15.08.2009 18:20:39

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ß

Antworten