java.lang.NoClassDefFoundError . was nun?

Status
Nicht offen für weitere Antworten.

latenite

Mitglied
hallo leute

ich habe seit kurzem ein linux zu laiufen und bin neu in der java welt. habe aber auf win schon ein paar kleine konsolenprogramme geschrieben.

leider kann ich hier unter linux nicht so recht loslegen weil mir IRGENDETWAS fehlt

die fehlermeldung ist immer die selbe.....
Code:
 19:28:5117 min  2 users  load average: 0.08 0.07 0.08
[19:28:51] [root@debian:~] # cd /root/Desktop/java_test/
[19:32:41] [root@debian:~/Desktop/java_test] # java
java          javadoc       javap         java_vm
javac         javah         java-rmi.cgi  javaws
[19:32:41] [root@debian:~/Desktop/java_test] # javac HelloWorld.java [19:32:54] [root@debian:~/Desktop/java_test] # java HelloWorld.class
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class
[19:33:02] [root@debian:~/Desktop/java_test] # cat HelloWorld.java
public class HelloWorld {
  public static void main (String[] args) {

    System.out.println("Hello World!");
  }
[19:33:21] [root@debian:~/Desktop/java_test] #

was muss ich hier tun?

danke schon mal :roll:
 
G

Guest

Gast
ich kann es dank dem weglassen des .class jetzt ausführen. danke

aber leider muss ich immer in dem ordner sein in dem die *.class sich befindet sonst kommt wieder der fehler.

t23:~# cd /
t23:/# java /root/Desktop/java_toc/uebungen/HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: /root/Desktop/java_toc/uebungen/HelloWorld (wrong name: HelloWorld)
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)
t23:/# cd /root/Desktop/java_toc/uebungen/
t23:~/Desktop/java_toc/uebungen# java HelloWorld
Hello World
t23:~/Desktop/java_toc/uebungen#

wie kann ich mein linux dazu bringend as ich, egal in welchem ordner mich mich befinde ich mit: java /pfad/zum/bytecode/*.class das proramm ausführen kann??

:roll:
 
S

SlaterB

Gast
evtl. reicht es, den Pfad zur Klasse in die Systemvariable CLASSPATH aufzunehmen,

dann java HelloWorld von überall aus
 

latenite

Mitglied
-cp hilft nicht

05:45 root@t23 ~ -> java -cp /root/Desktop/java_toc/uebungen/HelloWorld
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)

where options include:
-d32 use a 32-bit data model if available

-d64 use a 64-bit data model if available
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.

-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A : separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument

05:45 root@t23 ~ ->


und auch aus dem verzeichniss heraus geht snicht

05:45 root@t23 ~ -> cd /root/Desktop/java_toc/uebungen/
05:47 root@t23 ~/Desktop/java_toc/uebungen -> java HelloWorld
Hello World
05:47 root@t23 ~/Desktop/java_toc/uebungen -> java -cp HelloWorld
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)

where options include:
-d32 use a 32-bit data model if available

-d64 use a 64-bit data model if available
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.

-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A : separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
05:47 root@t23 ~/Desktop/java_toc/uebungen ->


was kan ich da tun?


welche datei muss ich als root editieren um den classpath zu defninieren??
 

moormaster

Top Contributor
latenite hat gesagt.:
-cp hilft nicht

05:45 root@t23 ~ -> java -cp /root/Desktop/java_toc/uebungen/HelloWorld
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)

Richtig. Das passiert, wenn man einfach Leerzeichen aus dem Befehl rauslöscht...

HelloWorld ist nur der Klassenname; der hat im Classpath nix verloren und wird daher auch durch ein Leerzeichen von diesem abgetrennt.

Code:
java -cp /root/Desktop/java_toc/uebungen HelloWorld

Manchmal soll es auch helfen, sich mal die Dokumentationen durchzulesen zu den Java Binaries...


und auch aus dem verzeichniss heraus geht snicht

05:45 root@t23 ~ -> cd /root/Desktop/java_toc/uebungen/
05:47 root@t23 ~/Desktop/java_toc/uebungen -> java HelloWorld
Hello World
05:47 root@t23 ~/Desktop/java_toc/uebungen -> java -cp HelloWorld
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)

Klar dass das nich geht... du legst mit -cp den Classpath fest, ohne diesen anzugeben... stattdessen gibst du nur den Klassennamen an ohne Classpath...

das "java HelloWorld" hat aber funktioniert.

was kan ich da tun?

bevor du jetzt noch weiter irgendwas eintippst, ohne zu wissen, wozu: RTFM
http://java.sun.com/javase/6/docs/technotes/tools/solaris/java.html
 

latenite

Mitglied
ich habe die verf***ten manual gelesen. :wink: aber irgendwie will ich seinbar "mehr" als möglich ist....ich werd´ smal versuchen zu beschreiben.


ich erstelle mit vim "irgendwo" eine .java datei. dann führe ich javac /der/pfad/zur/datei aus.
soweit so gut..geht ja auch alles.

jetzt das problem:

da /der/pad/zur/datei bei mir immer mal anders ist....weil ich z.B. noch einen unterordner auf mache nützt mir mein eintag in der ..bashrc

PATH=$PATH:/bin/my_scripts/
export PATH

JAVA_HOME=/
export JAVA_HOME

CLASSPATH=/usr/lib/:/java/
export CLASSPATH

leider gar nichts wenn das .class file nicht genau da drin liegt.

also bekomme ich wenn ich java /pfad/zur/datei/derenunterordener/*.class eingebe wieder diesen fehler.

06:27 root@t23 ~ -> java /root/Desktop/java_toc/uebungen/Hello
Exception in thread "main" java.lang.NoClassDefFoundError: /root/Desktop/java_toc/uebungen/Hello
06:34 root@t23 ~ ->

was ich will ist: das ich mit java /pfadangabe/*.class aus Jedem beliebigem Verzeichniss die Bytecodes ausführen kann.

das muss doch möglich sein?? oder ?? :roll:
 

moormaster

Top Contributor
Also folgendes:

Angenommen du hast folgende Verzeichnisstruktur:
Code:
~/java/
  Test.java
  ue01/
    Uebung01.java

du führst von irgendwo
Code:
javac ~/java/Test.java
und
Code:
javac ~/java/ue01/Uebung01.java

aus

dann sieht die Verzeichnisstruktur wahrscheinlich so aus:

Code:
~/java/
  Test.java
  Test.class
  ue01/
    Uebung01.java
    Uebung01.class

steht nun in der ~/.bashrc drin, dass die CLASSPATH Umgebungsvariable so gesetzt wurde:

Code:
export CLASSPATH=$CLASSPATH:~/java

dann ist folgendes von überall aus ausführbar:

java Test

Uebung01 ist leider nicht so ausführbar, weil sie in einem anderen Verzechnis liegt. Das heisst dieses andere Verzeichnis müsstest du dann mit in die CLASSPATH-Variable aufnehmen... Es ist dann aber definitiv einfacher, den benötigten Classpath beim Aufruf mitanzugeben:

Code:
java -cp [Pfad zum Classpath der auszuführenden Klasse] [Klassenname]

Eine andere Möglichkeit wäre:

Beim compilieren ein einheitliches Zielverzeichnis für alle Programme anzugeben:

Code:
mkdir ~/java/bin
javac -d ~/java/bin ~/java/Test.java
javac -d ~/java/bin ~/java/ue01/Uebung01.java

Dann landen beide .class Dateien direkt in ~/java/bin, solange in den Quelltexten keine packages angegeben sind. Ansonsten werden dort entsprechend Unterverzeichnisse angelegt für jedes Package.

Das führt allerdings zu Problemen, sobald verschiedene Programme gleichnamige Klassen benötigen, die aber nicht gleich sind...

Daher gibt es noch eine dritte Möglichkeit:

Statt im classpath herumzufummeln, fügst du das ~/java Verzeichnis zur die $PATH Variable hinzu. Dann erstellst du dir dort für jedes Java Programm entsprechend ein shell script, welches das jeweilige Programm dann mit den notwendigen Classpath Parametern startet... Dann könntest du dieses Script von überall aus ausführen.
 
G

Guest

Gast
danke das ist sehr ausfühlich.

das mit den scripten habe ich nich ganz verstanden. weil ich ja für jedes neue verzeichniss in dem eine *.java liegt dann ein script erstellen muesste das den classpath enthält?? oder??
 

moormaster

Top Contributor
Genau so ist es.

Deswegen ist es doch am einfachsten, wenn man einfach den Classpath und den vollständigen Klassennamen angibt

java -cp ~/java/ue01 Uebung01

das sollte auf jeden Fall von überall funktionieren.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JUnit in Eclipse: java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 9
J Erste Schritte java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 4
H java.lang.NoClassDefFoundError Run as>> Run on Server Java Basics - Anfänger-Themen 2
P Exception in thread "main" java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 1
K Caused by: java.lang.NoClassDefFoundError: org/mindrot/jbcrypt/BCrypt Java Basics - Anfänger-Themen 0
H Classpath java.lang.NoClassDefFoundError externe Libary Java Basics - Anfänger-Themen 4
M Exception in thread "main" java.lang.NoClassDefFoundError: MeineKlasse Java Basics - Anfänger-Themen 12
M Klassen Exception in thread "main" java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 2
P java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory Java Basics - Anfänger-Themen 1
T Fehlermeldung: java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 10
A java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 3
V java.lang.NoClassDefFoundError -- was kann ich tun? Java Basics - Anfänger-Themen 8
L java.lang.NoClassDefFoundError / SIP-Servlets Java Basics - Anfänger-Themen 4
G failed.java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 4
G Referenzierte Projekte: java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 2
K FEHLER: ".java.lang.NoClassDefFoundError" Java Basics - Anfänger-Themen 5
K java.lang.NoClassDefFoundError: Klasse (wrong name... Java Basics - Anfänger-Themen 17
O java.lang.NoClassDefFoundError Exception in thread "mai Java Basics - Anfänger-Themen 5
C RealJ java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 5
A java.lang.NoClassDefFoundError: FloatInt/class Java Basics - Anfänger-Themen 4
P java.lang.NoClassDefFoundError.Hauptklasse fehlt Java Basics - Anfänger-Themen 13
G java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 3
N java.lang.NoClassDefFoundError: main Java Basics - Anfänger-Themen 6
U java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 3
ff java.lang.NoClassDefFoundError: task/class Java Basics - Anfänger-Themen 4
J "main" java.lang.NoClassDefFoundError: PortENum Java Basics - Anfänger-Themen 9
E java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 10
N java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 7
G java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 2
K java.lang.NoClassDefFoundError: HalloJava Java Basics - Anfänger-Themen 5
P java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 9
G java.lang.NoClassDefFoundError. Hä? Java Basics - Anfänger-Themen 4
J java.lang.NoClassDefFoundError bei Java-Aufruf aus UNIX Java Basics - Anfänger-Themen 2
B Warum java.lang.NoClassDefFoundError? Java Basics - Anfänger-Themen 8
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
JaVaN0oB java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 18
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
D java.lang.NullPointerException Java Basics - Anfänger-Themen 19
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
B java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 3
P java.lang.ClassCastException Bedeutung und Lösung Java Basics - Anfänger-Themen 3
I java.lang.ArrayIndexOutOfBoundsException at lösung.main Java Basics - Anfänger-Themen 3
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
T Compiler-Fehler java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 2
R java.lang.ArrayIndexOutOfBoundsException: 0 Rechner Error Java Basics - Anfänger-Themen 4
D Erste Schritte Java.lang.NullPointer.Exception Java Basics - Anfänger-Themen 8
H java.lang.NullPointerException Java Basics - Anfänger-Themen 4
G java.lang.NullPointerException Java Basics - Anfänger-Themen 3
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
N jodaTime java.lang.IllegalArgumentException: Invalid format Java Basics - Anfänger-Themen 3
E Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 2
F Erste Schritte java.lang.StringIndexOutOfBoundsException Java Basics - Anfänger-Themen 3
J java.lang.NullPointerException in meiner JavaFXControllerKlasse Java Basics - Anfänger-Themen 26
R java.lang.StringIndexOutOfBoundsException Java Basics - Anfänger-Themen 1
D Communications link failure | java.lang.NullPointerException Java Basics - Anfänger-Themen 3
V java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 2
F java.lang.NullPointerException, kann aber nicht sein! Java Basics - Anfänger-Themen 4
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
M java.lang.Enum.valueOf(Unknown Source) Java Basics - Anfänger-Themen 2
L Compiler-Fehler Problem beim Programmieren eines Kalenders (java.lang.ArrayIndexOutOfBoundsException) Java Basics - Anfänger-Themen 2
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
C Hilfe!!! java.lang.ClassCastException Java Basics - Anfänger-Themen 1
O java.lang.IndexOutOfBoundsException JTable autoSort Java Basics - Anfänger-Themen 5
M Compiler-Fehler Java suckt - java.lang.NullPointerException Java Basics - Anfänger-Themen 12
W Methoden Rückgabedatentyp java.util.Map<java.lang.String,? extends ...> Java Basics - Anfänger-Themen 4
L Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 2
F Exception in thread main java.lang.StackOverflowError Java Basics - Anfänger-Themen 3
S java.lang.NullPointerException Java Basics - Anfänger-Themen 4
G Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 4
OnDemand java.lang.reflect.InvocationTargetException Java Basics - Anfänger-Themen 9
A Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 7
J Klassen java.lang.String - lexikographisches Sortieren Java Basics - Anfänger-Themen 5
P Interpreter-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 3
T Erste Schritte import java.lang.System.out Java Basics - Anfänger-Themen 4
T Problem mit Eclipse? Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 4
X Applet Fehler: java.lang.reflect.InvocationTargetException Java Basics - Anfänger-Themen 45
B java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
K Date cannot be cast to java.lang.Integer Java Basics - Anfänger-Themen 4
H java.lang.IndexOutOfBoundsException bei verschachtelter ArrayList Java Basics - Anfänger-Themen 9
S Fehler: "java.lang.NullPointerException" Java Basics - Anfänger-Themen 6
V java.lang.NoSuchMethodError Java Basics - Anfänger-Themen 2
J java.lang.math asin() Java Basics - Anfänger-Themen 18
I Erste Schritte Ausführfehler: java.lang.NullPointerException Java Basics - Anfänger-Themen 3
R Compiler-Fehler java.lang.ArrayIndexOutOfBoundsException, warum? Java Basics - Anfänger-Themen 6
K Error: java.lang.NoSuchMethodException Java Basics - Anfänger-Themen 2
M Compiler-Fehler Fehler Meldung java.lang.NumberFormatException: empty String Java Basics - Anfänger-Themen 2
G java.lang.ClassNotFoundException Java Basics - Anfänger-Themen 4
1 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException Java Basics - Anfänger-Themen 5
S Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 11
S String index out of range: 8 at java.lang.String.substring(Unknown Source) Java Basics - Anfänger-Themen 13
V [Greenfoot] java.lang.NullPointerException Java Basics - Anfänger-Themen 12
S Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 10
X Interpreter-Fehler "java.lang.NullPionterException: null" bei BlueJ Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben