/ 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
jar-fil problem
Fra : Peter T. Nielsen


Dato : 11-05-02 20:24

Hej!

Jeg har lavet et projekt med op til flere packages i og nu vi jeg gerne
have det hele samlet i en jar-fil.
Jeg har lavet jar filen med kommandoen: jar cvf navn.jar

Derefter compiler jeg et test eksempel med:
javac MainTest.java -classpath navn.jar:navn2.jar
hvor navn2.jar er en jar fil hentet på nettet. Det går
fint, men når jeg så vil køre test programmet med:

java MainTest -classpath navn.jar:navn2.jar

får jeg fejlen:
Exception in thread "main" java.lang.NoClassDefFoundError:
model/ComponentFactory

Jeg kan dog se at filen model/ComponentFactory.class ligger i den jar fil
jeg selv har lavet.

Nogen der kan se hvad jeg gør forkert? Testprogrammet køre selvfølgelig
fint hvis jeg bruge class filerne direkte!

Med tak for hjælpen
Peter

 
 
Lars Dam (11-05-2002)
Kommentar
Fra : Lars Dam


Dato : 11-05-02 21:25

On Sat, 11 May 2002 21:24:25 +0200, "Peter T. Nielsen"
<petni@image.dk> wrote:

>Hej!
>
>
>java MainTest -classpath navn.jar:navn2.jar

Prøv at bytte rundt på argumenterne, og brug semikolon istedet for
kolon:

java -classpath navn.jar;navn2.jar MainTest

>får jeg fejlen:
>Exception in thread "main" java.lang.NoClassDefFoundError:
>model/ComponentFactory
>
>Med tak for hjælpen
>Peter

vh. ld


Thorbjørn Ravn Ander~ (11-05-2002)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 11-05-02 21:48

"Peter T. Nielsen" <petni@image.dk> writes:

> java MainTest -classpath navn.jar:navn2.jar
>
> får jeg fejlen:
> Exception in thread "main" java.lang.NoClassDefFoundError:
> model/ComponentFactory
>
> Jeg kan dog se at filen model/ComponentFactory.class ligger i den jar fil
> jeg selv har lavet.

Du har brugt Unix-syntaksen. Sidder du på en Windowsmaskine?
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Lars Dam (11-05-2002)
Kommentar
Fra : Lars Dam


Dato : 11-05-02 22:27

On 11 May 2002 22:48:05 +0200, thunderbear@bigfoot.com (Thorbjørn Ravn
Andersen) wrote:

>> får jeg fejlen:
>> Exception in thread "main" java.lang.NoClassDefFoundError:
>> model/ComponentFactory
>>
>> Jeg kan dog se at filen model/ComponentFactory.class ligger i den jar fil
>> jeg selv har lavet.
>
>Du har brugt Unix-syntaksen. Sidder du på en Windowsmaskine?

java's class loader/fil håndtering sørger for at /og \ er korrekte
(bliver mappet korrekt). Dvs. man behøver ikke tænke på dette i sin
(normale) programmering.

vh.ld

Thorbjørn Ravn Ander~ (11-05-2002)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 11-05-02 22:58

Lars Dam <larsdamXXspamXXprotectionXX@post2.tele.dk> writes:

> >Du har brugt Unix-syntaksen. Sidder du på en Windowsmaskine?
>
> java's class loader/fil håndtering sørger for at /og \ er korrekte
> (bliver mappet korrekt). Dvs. man behøver ikke tænke på dette i sin
> (normale) programmering.

Korrekt. Men ";" og ":" har forskellig betydning på de to platforme i
CLASSPATH variablen.
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Lars Dam (12-05-2002)
Kommentar
Fra : Lars Dam


Dato : 12-05-02 08:31

On 11 May 2002 23:58:15 +0200, thunderbear@bigfoot.com (Thorbjørn Ravn
Andersen) wrote:

>Lars Dam <larsdamXXspamXXprotectionXX@post2.tele.dk> writes:
>
>
>Korrekt. Men ";" og ":" har forskellig betydning på de to platforme i
>CLASSPATH variablen.

Det er vist rigtigt nok; det er længe siden jeg har siddet på en unix boks.

Men det originale problem består i at manden sætter classpath op
_efter_ main klasse navnet - alle argumenter efter main klassen bliver
sendt videre til java applikationen og ikke til jvm'en.

vh. ld


Thorbjørn Ravn Ander~ (12-05-2002)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 12-05-02 08:47

Lars Dam <larsdamXXspamXXprotectionXX@post2.tele.dk> writes:

> Men det originale problem består i at manden sætter classpath op
> _efter_ main klasse navnet - alle argumenter efter main klassen bliver
> sendt videre til java applikationen og ikke til jvm'en.

Den havde jeg misset. Jeg plejer normalt at have CLASSPATH sat op i
mine omgivelser, og sjaeldent direkte fra kommandolinien.

--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Peter T. Nielsen (12-05-2002)
Kommentar
Fra : Peter T. Nielsen


Dato : 12-05-02 09:36

"Thorbjørn Ravn Andersen" wrote:
>
> "Peter T. Nielsen" <petni@image.dk> writes:
>
> > java MainTest -classpath navn.jar:navn2.jar
> >
> > får jeg fejlen:
> > Exception in thread "main" java.lang.NoClassDefFoundError:
> > model/ComponentFactory
> >
> > Jeg kan dog se at filen model/ComponentFactory.class ligger i den jar fil
> > jeg selv har lavet.
>
> Du har brugt Unix-syntaksen. Sidder du på en Windowsmaskine?

Jeg sider på en linux/unix maskine, men som I selv
har fundet ud af er det ikke kolonet der er
problemet. Hvis jeg skrive MainTest som det sidste
argument får jeg:

java -classpath bando.jar:../JMF2.1.1/lib/jmf.jar
MainTest
Exception in thread "main"
java.lang.NoClassDefFoundError: MainTest

MainTest class filerne ligger selvfølgelig i det
bibliotek jeg kører kommandoen fra! Desuden
hjælper det ikke at skrive hele stien til
MainTest.

Peter

Peter T. Nielsen (12-05-2002)
Kommentar
Fra : Peter T. Nielsen


Dato : 12-05-02 12:23


> java -classpath bando.jar:../JMF2.1.1/lib/jmf.jar
> MainTest
> Exception in thread "main"
> java.lang.NoClassDefFoundError: MainTest

Hvis man skriver:
java -classpath
bando.jar:../JMF2.1.1/lib/jmf.jar:./

virker det fint!

Jeg har dog stadig et problem. Jeg har nogle
billeder i projektet, og disse bliver ikke vist
når man kører det med jar filen. De ligge
selvfølgelig i jarfilen under den samme sti som
ved class filerne.

Skal man gøre noget specielt når det kommer til
billeder?

Peter

Lars Dam (12-05-2002)
Kommentar
Fra : Lars Dam


Dato : 12-05-02 17:02

On Sun, 12 May 2002 13:23:25 +0200, "Peter T. Nielsen"
<petani@daimi.au.dk> wrote:

>
>Jeg har dog stadig et problem. Jeg har nogle
>billeder i projektet, og disse bliver ikke vist
>når man kører det med jar filen. De ligge
>selvfølgelig i jarfilen under den samme sti som
>ved class filerne.
>
>Skal man gøre noget specielt når det kommer til
>billeder?

Ikke decideret kun billeder, men resourcer generelt som din
applikation har brug for (text filer, data filer o.l.). Overvej at
bruge følgende:

InputStream is =
this.getClass().getResourceAsStream(resourceName);

Den åbner en fil relativ til den class som 'this' er af på class
path'en. Dvs. det vil så fungere med både jar og directory strukturer.

>Peter

vh. ld

Thorbjørn Ravn Ander~ (12-05-2002)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 12-05-02 12:49

"Peter T. Nielsen" <petani@daimi.au.dk> writes:

> Jeg sider på en linux/unix maskine, men som I selv
> har fundet ud af er det ikke kolonet der er
> problemet. Hvis jeg skrive MainTest som det sidste
> argument får jeg:
>
> java -classpath bando.jar:../JMF2.1.1/lib/jmf.jar
> MainTest
> Exception in thread "main"
> java.lang.NoClassDefFoundError: MainTest

Overvej at tilføje ":." til dit -classpath argumetn.

--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste