Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Java ClassPath? Mit Eclipse?





Frage

Hallo! Habe ein Java Programm mit mehrern Klassen in einer Package geschrieben, welches die CommAPI benutzt. Unter Eclipse funktioniert das wunderbar, auf der Eingabeaufforderung kommt allerdings folgende Meldung: Exception in thread "main" java.lang.NoClassDefFoundError: ComServer (w : ComServer/ComServer) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) Muss die API auf jeder Maschine drauf sein, wo ich das Programm laufen lassen möchte? Danke schonmal, Michael

Antwort 1 von disco

moin

das ist das Problem, wenn die Entwicklungsumgebung die Hälfte der Arbeit übernimmt. Wenn du deine Klassen auch ausserhalb davon betreiben willst, musste den CP beim Programmaufruf mit angeben (von jeder einzelnen Bibliothek). Oder du packst alle notwendigen Bibs und deine Klassen in ein JAR-File.

Gibt da massig zu im Netz, wo du dich ertmal informieren kannst. Frag bei konkreten Problemen ruhig nochmal nach.

g,
disco

Antwort 2 von pheeos

Alles klar, danke!
Noch eine Frage: Ich nutze die funktion string.replace(str,str) für zeichenketten.. ausführen unter eclipse mit 1.5.0 JRE geht. Wenn ich es versuche zu kompilieren bekomm ich entsprechend meldungen, dass ich nur chars ersetzen kann..

fragen über fragen.. .-)

Vielen Dank,

michael

Antwort 3 von disco

laut api braucht das auch ne CharSequence.:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html

probier mal
replaceAll(String, String);

Antwort 4 von pheeos

Hi Disco,

das 2.Problem hat sich erledigt.. aber ich bekomme immernoch nicht meine klassen an der eingabeaufforderung ans rennen, nur in der IDE..
angenommen ich hab meine klassen in c:\classes und meine commapi ist c:\java\lib\comm.jar, wie muss der classpath aussehen?

vielen dank,

michael

Antwort 5 von disco

als du befindest dich in
c:\classes

dann musste sagen

java -classpath .;c:\java\lib\comm.jar DeineKlasse

beim compilieren musste das auch machen.

g,
disco

Antwort 6 von pheeos

Alles klar,
wenn ich die API mit kompiliere, muss diese dann auch auf jedem Rechner vorhanden sein wo ich mein prog laufen lasse?

ziel ist eigentlich das ganze in eine jar zu bekommen.. aber irgendwie läuft das net..

Antwort 7 von disco

da musste mal googeln, das ist zig mal beschrieben.
werd dir nur ca. sagen, wie du "per hand" vorgehen musst. gibt bestimmt auch plugins für eclipse.

du nimmst einen ordner und packst da deine programmierten classes rein. ausserdem entpackst du alle fremden und notwendigen JARS ind das gleiche verzeichnis. informier dich übers manifest und pack das entsprechend rein. dann packst du den gesamten ordner mit einem zip programm. aber statt der endung zip vergibst du JAR.

Antwort 8 von pheeos

So, ein bissl klappt nun! :-)

wenn ich die Dateien NICHT in ein jar packe und per folgender batch starte, gehts:

set CLASSPATH=.;c:\programme\java\jre1.5.0_04\lib\comm.jar
java ComServer.ComServer

So nun habe ich versucht per jar ein jar zu erstellen:
jar cvfm ComServer.jar manifest.mf ComServer

das manifest sieht so aus:
Manifest-Version: 1.0
CLASS-PATH: .
MAIN-CLASS: ComServer.ComServer

Beim Aufruf mit java -jar ComServer.jar kommt folgendes:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/comm/Unsupport
dCommOperationException
at ComServer.ComServer.main(ComServer.java:21)

haste da noch ne idee? muss ich im manifest noch nen path setzen?

vielen dank,

michael

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: