/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Runtime problem
Fra : Martin Schultz


Dato : 20-04-04 11:23

Hejsa

Der er opstået et mystisk problem på min maskine. Jeg har installeret hele
java pakken fra sun med netbeans og jeg kører Windows XP.

Når jeg prøver at køre et hvilket somhelst af mine egne java programmer fra
kommando linien får jeg følgende fejl:

D:\source\java\natrange>java natrange
Exception in thread "main" java.lang.NoClassDefFoundError: natrange (wrong
name:
natrange/natrange)
at java.lang.ClassLoader.defineClass0(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)

min klasse hedder natrange.class og java filen hedder natrange.java. Hvis
jeg kører samme program inde fra netbeans kører det ganske fint uden nogen
problemer.

Hvad kan der være galt?

Martin
--
Besøg http://www.adsltips.dk for guider til
ADSL og opsætning af Cisco/Zyxel routere.

 
 
Rolf E. Thorup (20-04-2004)
Kommentar
Fra : Rolf E. Thorup


Dato : 20-04-04 13:59

Martin Schultz wrote:

> Hejsa
>
> Der er opstået et mystisk problem på min maskine. Jeg har installeret hele
> java pakken fra sun med netbeans og jeg kører Windows XP.
>
> Når jeg prøver at køre et hvilket somhelst af mine egne java programmer fra
> kommando linien får jeg følgende fejl:
>
> D:\source\java\natrange>java natrange
> Exception in thread "main" java.lang.NoClassDefFoundError: natrange (wrong
> name:
> natrange/natrange)
> at java.lang.ClassLoader.defineClass0(Native Method)
> at java.lang.ClassLoader.defineClass(Unknown Source)
> at java.security.SecureClassLoader.defineClass(Unknown Source)
[SNIP noget stack trace]
>
> min klasse hedder natrange.class og java filen hedder natrange.java. Hvis
> jeg kører samme program inde fra netbeans kører det ganske fint uden nogen
> problemer.

Nu har du ikke givet koden til din klasse med, og heller ikke fortalt om
de programmer du selv har lavet er lavet inde fra netbeans.

Hvis de er det, er mit umiddelbare gæt at Netbeans har lagt din kode i
package, f.eks. natrange. Hvis det er tilfældet, skal du vide, at hvis
du vil udføre koden fra kommandolinjen skal du hoppe et niveau ud og køre

java natrange.natrange

Mvh Rolf

Martin Schultz (20-04-2004)
Kommentar
Fra : Martin Schultz


Dato : 20-04-04 15:17

On Tue, 20 Apr 2004 14:59:25 +0200, Rolf E. Thorup wrote:

> Martin Schultz wrote:
>
[snip]
>> min klasse hedder natrange.class og java filen hedder natrange.java. Hvis
>> jeg kører samme program inde fra netbeans kører det ganske fint uden nogen
>> problemer.
>
> Nu har du ikke givet koden til din klasse med, og heller ikke fortalt om
> de programmer du selv har lavet er lavet inde fra netbeans.
>
> Hvis de er det, er mit umiddelbare gæt at Netbeans har lagt din kode i
> package, f.eks. natrange. Hvis det er tilfældet, skal du vide, at hvis
> du vil udføre koden fra kommandolinjen skal du hoppe et niveau ud og køre
>
> java natrange.natrange

Jeps, du har ret det er package tingen der giver problemet. Jeg burde noget
have sendt noget kode med. Kan man slå packages fra i netbeans?

Martin
--
Besøg http://www.adsltips.dk for guider til
ADSL og opsætning af Cisco/Zyxel routere.

Soren Kuula (20-04-2004)
Kommentar
Fra : Soren Kuula


Dato : 20-04-04 16:44

Hej,
> Jeps, du har ret det er package tingen der giver problemet. Jeg burde noget
> have sendt noget kode med. Kan man slå packages fra i netbeans?
>
> Martin

Nej, det ville være lige så zygt som at slå directories fra i Windows.

Hvis din main klasse har det "fuldt kvalificerede navn" (dvs navn incl
package)

com.stinkdyr.SuperProgram

og du compilerer i NetBeans eller whatever, og output ender i for eksempel :

/home/stinky/java/build/com/stinkdyr/SuperProgram.class
(linux)

eller
x:/java/build/com/stinkdyr/SuperProgram.class
(Windows)

så burde du kunne starte det fra en shell med

java -classpath /home/stinky/java/build com.stinkdyr.SuperProgram
(Linux)

eller
java -classpath x:/java/build com.stinkdyr.SuperProgram

.......

så directories i classpath er dem som indeholder directorierne med de
venstreste dele af de fuldt kvalificerede Java navne (her com).

Der har selvfølgelig ikke så meget med NetBeans at gøre, men med den
rigtige baggrundsviden kan man jo få de fleste ting til at virke.

MVH
Søren

Martin Schultz (20-04-2004)
Kommentar
Fra : Martin Schultz


Dato : 20-04-04 17:01

On Tue, 20 Apr 2004 17:44:29 +0200, Soren Kuula wrote:

> Hej,
>> Jeps, du har ret det er package tingen der giver problemet. Jeg burde noget
>> have sendt noget kode med. Kan man slå packages fra i netbeans?
>>
>> Martin
>
> Nej, det ville være lige så zygt som at slå directories fra i Windows.
[snip]
> Der har selvfølgelig ikke så meget med NetBeans at gøre, men med den
> rigtige baggrundsviden kan man jo få de fleste ting til at virke.

Jeg er uegnig. For små programmer er det nemmere at skrive java classfilen
og jeg kan ikke se hvad man vinder ved det andet.

Jeg er måske bare kedelig og mærket af at sidst jeg rigtigt lavede noget
med java var det via emacs og make filer.

Martin
--
Besøg http://www.adsltips.dk for guider til
ADSL og opsætning af Cisco/Zyxel routere.

Nikolaj Hansen (20-04-2004)
Kommentar
Fra : Nikolaj Hansen


Dato : 20-04-04 18:16

> Jeg er uegnig. For små programmer er det nemmere at skrive java classfilen
> og jeg kan ikke se hvad man vinder ved det andet.

Det er ret vigtigt, at du bruger pakke systemet, hvis du skriver kode
som andre skal bruge.

Forestil dig at du har to "User" classes. Der er næsten sådan et begreb
i ethvert system.

Hvis det så lå i roden af dit pakke hieraki har du kun et, og du kan
ikke umiddelbart se, hvor det kommer fra.

Hvis i stedet du brugte:

dk.mitdomæne.auth.User.class

Så kunne man hurtigt kende det fra eks.

org.apache.auth.User.class (tænkt eksempel)

Hvis du laver logging, med eks. log4j, så giver det dig også mulighed
for at lave logfiler for specifikke sub pakke strukturerer som eks. for
ovenstående. Du vil så kunne logge alt fra dk.mitdomæne.auth.* til en
selvstændig logfil.

mvh.

Nikolaj Hansen

Soren Kuula (20-04-2004)
Kommentar
Fra : Soren Kuula


Dato : 20-04-04 18:41

Martin Schultz wrote:

> Jeg er uegnig. For små programmer er det nemmere at skrive java classfilen
> og jeg kan ikke se hvad man vinder ved det andet.

WHAT ? Bruger du ikke en compiler ? Det har jeg da osse undladt, men
ikke til programmer på mere end 20-30 linier JVM bytecode :=)

> Jeg er måske bare kedelig og mærket af at sidst jeg rigtigt lavede noget
> med java var det via emacs og make filer.

Packages er en rigtig rigtig god vane, synes jeg .. også når man bruger
emacs. De hjælper / tvinger dig til at tænke lidt modulært over hvad du
laver, og du kan bruge visibility reglerne til noget fornuftigt.

Til single file programmer er der dog ikke nogen grund til at bruge dem
... men det er vel ikke for at lave små fuskerprogrammer at særlig mange
lærer Java ?

MVH
Søren

Martin Schultz (21-04-2004)
Kommentar
Fra : Martin Schultz


Dato : 21-04-04 09:20

On Tue, 20 Apr 2004 19:41:20 +0200, Soren Kuula wrote:

>> Martin Schultz wrote:
>> Jeg er måske bare kedelig og mærket af at sidst jeg rigtigt lavede noget
>> med java var det via emacs og make filer.
>
> Packages er en rigtig rigtig god vane, synes jeg .. også når man bruger
> emacs. De hjælper / tvinger dig til at tænke lidt modulært over hvad du
> laver, og du kan bruge visibility reglerne til noget fornuftigt.
>
> Til single file programmer er der dog ikke nogen grund til at bruge dem
> .. men det er vel ikke for at lave små fuskerprogrammer at særlig mange
> lærer Java ?

Jeg er personligt ikke den store fan af java. Jeg har kun brugt det når jeg
ikke har kunne komme uden om det.

Det er nok derfor jeg ikke har fået sat mig ind i den slags ting. Det var
ikke noget der blev nævnt dengang jeg havde et kursus der omhandlede java.


Martin
--
Besøg http://www.adsltips.dk for guider til
ADSL og opsætning af Cisco/Zyxel routere.

Niels Dybdahl (21-04-2004)
Kommentar
Fra : Niels Dybdahl


Dato : 21-04-04 10:00

> Jeps, du har ret det er package tingen der giver problemet. Jeg burde
noget
> have sendt noget kode med. Kan man slå packages fra i netbeans?

Du kan sagtens lave en class i Netbeans, som ikke ligger i en package. Du
skal bare placere den i roden af dit projekt.

Niels Dybdahl



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408917
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste