Gå til innhold

java.lang.NoClassDefFoundError


Anbefalte innlegg

Får en java.lang.NoClassDefFoundError når jeg prøver å kjøre en kompilert .java fil i command interpreter, men den kan fint kjøres fra IDE. Men jeg får også samme feilen når jeg prøver å kjøre en .jar fil fra IDE.

 

Hva har jeg glemt?

Lenke til kommentar
Videoannonse
Annonse

Er ikke helt stødig på dette, får til stadighet samme problem :D Men har du sjekket at alt som skal ligge i classpath ligger der? Ved bruk av en del IDEer så gjør en dette i IDEer selv, men det hjelper ikke alltid når en skal gjøre det fra kommandolinjen.

 

Håper det hjalp, var et skudd i blinde :p

Lenke til kommentar

Er nok et classpath problem, ja. Hvis du står i samme katalog som den kompilerte class-fila du skal kjøre, så ta en "set classpath=." først. Hvis du står i en annen katalog bruk "set classpath=[katalog der class-fila er]"

Lenke til kommentar

Står i katalogen der .class fila ligger. Det er ikke samme katalog som .java fila ligger. Skriver inn "set classpath=." og etterpå java "filnavn".class

 

Får fortsatt den samme feilmeldingen.

Er det noe jeg gjør feil? Må det gjøres noen instillinger i editoren?

Bruker JBuilder 8.

Lenke til kommentar

En ting du kan prøve for å få kjørt programmet ditt i cmd er: SET JAVA_HOME=C:Program Files.....

Settes til roten der JRE eller SDK katalogen din ligger.

 

Kan ellers tenke meg at problemet med å kjøre .jar i IDE er pga dette er en Java-Bean, som må legges til IDE. Bruker selv Forte, og der har de add Java-Bean. Når dette er gjort kan du bruke metodene i Java-Beanen.

 

Håper jeg har forstått rett og at dette kan hjelpe.

Lenke til kommentar

Du skal ikke ha med ".class" når du kjører programmer med java.

 

Jeg tipper problemene dine skyldes at du bruker noen JBuilder-klasser som

java.exe ikke kjenner til, men siden du verken har oppgitt feilmeldingene eller kildekoden er det fryktelig vanskelig å vite hva det er.

Lenke til kommentar

Her er kildekoden.

 


package helloworld;



public class helloWorld {

   public helloWorld() {

       System.out.println("Hello World");

   }

   public static void main(String[] args) {

       new helloWorld();

   }



}

 

Denne feilmeldingen får jeg når jeg skriver "java helloWorld".

Har kompilert den både i Jbuilder og med kommandoen "javac helloWorld.java". Det funker fint å kjøre i JBuilder.

 

Exception in thread "main" java.lang.NoClassDefFoundError: helloWorld (wrong name: helloworld/helloWorld)

at java.lang.ClassLoader.defineClass0(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:502)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)

at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)

at java.net.URLClassLoader.access$100(URLClassLoader.java:54)

at java.net.URLClassLoader$1.run(URLClassLoader.java:193)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:186)

at java.lang.ClassLoader.loadClass(ClassLoader.java:299)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)

at java.lang.ClassLoader.loadClass(ClassLoader.java:255)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)

Lenke til kommentar

Her er problemet ditt:

 


package helloworld;

 

Du har definert programmet til å tilhøre pakken helloworld, og da forventer java å finne klassen i en underkatalog med navn helloworld. Fjern denne linjen, eller legg klassefila i en underkatalog med navn helloworld så tror jeg alt skal virke.

Lenke til kommentar
  • 2 måneder senere...
Er nok et classpath problem, ja. Hvis du står i samme katalog som den kompilerte class-fila du skal kjøre, så ta en "set classpath=." først. Hvis du står i en annen katalog bruk "set classpath=[katalog der class-fila er]"

 

Dette fungerer, men kun på .java filer. Får fremdeles beskjed om java.lang.NoClassDefFoundError: Test

 

Test.java får jeg kjørt. Lager jeg en .jar fil av den fungerer det ikke.

Lenke til kommentar

Jeg er ikke vant med å bruke jar-filer, men hvis jeg husker riktig så skal den være med i classpath.

 

F.eks. hvis klassen Test ligger i jar-fila test.jar så bruk classpath=[path til katalogen]test.jar

 

så skal du kunne kjøre den med "java Test"

Lenke til kommentar
  • 1 måned senere...
  • 1 måned senere...

Takker :D

 

funker fint nå.

bare se: (Linux)


[kyrre@localhost Java]$ ls

FiboNaci.class  HelloDate.class  HelloWorld.class

FiboNaci.java   HelloDate.java   HelloWorld.java

FiboNaci.java~  HelloDate.java~  HelloWorld.java~

[kyrre@localhost Java]$ javac FiboNaci.java

[kyrre@localhost Java]$ java FiboNaci

1

1

2

3

...

7540113804746346429

**************Results**************

Oddetall:

62

Partall:

30

Antall runder:

92

Forholdstall siste to tall: (Gyldene snitt)

1.618033988749895

[kyrre@localhost Java]$

 

Hvis noen vil ha (forbedre) kildekoden, gå på www.solution-forge.net (GPL)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...