/ 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
Eclipse: external JARs how-to ?
Fra : Janus


Dato : 28-03-06 00:53

Hej NG!

Sidder og leger lidt med JavaHelp.

Har lavet en lille applikation, der benytter sig af JavaHelp. Jeg har
tilføjet jh.jar under den JRE, der ligger under Installed JREs. Dermed
har jeg fået Syntax Highlighting og Code Assist til JavaHelp.
Mit lille program virker fint, men når jeg exporterer det til en
executable JAR, virker det ikke. Det er selvfølgelig fordi, jeg ikke får
jh.jar med i min egen JAR, men hvordan tilgår jeg egentlig det her smartest?

Spørgsmålet er vel egentlig af ret generel karakter mht brugen af
eksterne JAR i Eclipse: Hvordan får jeg automatisk tilføjet de JARs der
bliver benyttet i et projekt, således at de automatisk kommer med i min
Export (til en eksekverbar JAR)? Man kan vel ikke regne med, at brugerne
derude selv har jh.jar eller j2ee.jar liggende... og i deres class path?

Og så lige en anden ting: Hvis jeg bruger Import og dermed tilføjer
diverse JAR filer til mit projekt, bliver de ikke listet som blot
JAR-filer, men eksempelvis com.sun.java.help og javax.help i min Package
Explorer. Kan man ikke få dem til at figurere blot som en JAR-fil? Det
bliver totalt uoverskueligt meget hurtigt ellers.



På forhånd mange tak,

Janus

 
 
Arne Vajhøj (28-03-2006)
Kommentar
Fra : Arne Vajhøj


Dato : 28-03-06 01:23

Janus wrote:
> Spørgsmålet er vel egentlig af ret generel karakter mht brugen af
> eksterne JAR i Eclipse: Hvordan får jeg automatisk tilføjet de JARs der
> bliver benyttet i et projekt, således at de automatisk kommer med i min
> Export (til en eksekverbar JAR)? Man kan vel ikke regne med, at brugerne
> derude selv har jh.jar eller j2ee.jar liggende... og i deres class path?

Du kan ikke putte en jar ind i en anden jar.

Du lader din eksekverbare jar have et manifest med et Class-Path
direktiv som peger på den anden jar og putter de 2 jar filer i
samme dir.

> Og så lige en anden ting: Hvis jeg bruger Import og dermed tilføjer
> diverse JAR filer til mit projekt, bliver de ikke listet som blot
> JAR-filer, men eksempelvis com.sun.java.help og javax.help i min Package
> Explorer. Kan man ikke få dem til at figurere blot som en JAR-fil? Det
> bliver totalt uoverskueligt meget hurtigt ellers.

project
properties
java build path
libraries
add external jar

Arne

Janus (28-03-2006)
Kommentar
Fra : Janus


Dato : 28-03-06 18:11

Arne Vajhøj wrote:

>
> Du kan ikke putte en jar ind i en anden jar.
>

Hvorfor kan man egentlig ikke dét? Altså, rent fysisk kan det godt lade
sig gøre, men jeg går ud fra, at du refererer til et problem med at ha'
class path'en pegende ind den eksekvérbare jar? (det kan jeg nemlig ik'
få til at virke)

> Du lader din eksekverbare jar have et manifest med et Class-Path
> direktiv som peger på den anden jar og putter de 2 jar filer i
> samme dir.

Har lavet dette:

Manifest-Version: 1.0
Class-Path: etc/jhbasic.jar etc/other.zip etc/third.jar
Main-Class: start.Gui

-og det virker fint :)


Har mange andre spørgsmål til Eclipses opførsel, så I/du kan godt regne
med, at der kommer et par spørgsmål eller tre på et tidspunkt. Hele
vejen igennem: Mange tak, Arne!



Vh Janus

Thorbjørn Ravn Ander~ (28-03-2006)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 28-03-06 18:23

Janus <invalid@invalid.dk> writes:

> Hvorfor kan man egentlig ikke dét? Altså, rent fysisk kan det godt
> lade sig gøre, men jeg går ud fra, at du refererer til et problem med
> at ha' class path'en pegende ind den eksekvérbare jar? (det kan jeg
> nemlig ik' få til at virke)

Standard classloaderen understøtter det ikke.

> Manifest-Version: 1.0
> Class-Path: etc/jhbasic.jar etc/other.zip etc/third.jar
> Main-Class: start.Gui
>
> -og det virker fint :)

Fordi de ligger i etc/ ved siden af din jar.


--
Thorbjørn Ravn Andersen


Arne Vajhøj (29-03-2006)
Kommentar
Fra : Arne Vajhøj


Dato : 29-03-06 03:32

Janus wrote:
> Arne Vajhøj wrote:
>> Du kan ikke putte en jar ind i en anden jar.
>
> Hvorfor kan man egentlig ikke dét? Altså, rent fysisk kan det godt lade
> sig gøre, men jeg går ud fra, at du refererer til et problem med at ha'
> class path'en pegende ind den eksekvérbare jar? (det kan jeg nemlig ik'
> få til at virke)

Det gør Java ikke.

Som Thorbjørn har antydet kunne man skrive sin egen classloader
til at kunne gøre det.

Men det gør man nu nok ikke.

Det er simpelthen praktisk at have dem ved siden af.

Hvis modtagerne selv har den eksterne jar fil så kan du
distribuere en lile jar fil med kun din egen kode.

Modtager kan meget nemt opdatere den eksterne jar
til en nyere version.

Flere applikationer som bruger samme eksetrne jar kan nøjes
med en kopi.

I visse tilfælde kan du med fordel selv lade modtagerne
hente den eksterne jar fil af licens mæssige årsager
(den eksterne jar fil er GPL og din kode er ikke).

Etc.etc..

Det er reelt samme årsag som at man normalt linker
dynamisk og ikke statisk.

Arne

Thorbjørn Ravn Ander~ (29-03-2006)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 29-03-06 09:38

Arne Vajhøj <arne@vajhoej.dk> writes:

> Som Thorbjørn har antydet kunne man skrive sin egen classloader
> til at kunne gøre det.

Fx one-jar, som fjep.sf.net (fast jar eclipse plugin) bruger.

> Men det gør man nu nok ikke.

Det svinger.

Til distribution uden for egen kontrol, er det en enorm lettelse at
kun have netop _en_ fil, hvor classpath _er_ sat rigtigt op, med de
rigtige biblioteker. Det fjerner enormt mange fejlkilder, og
centraliserer konfigurationen. Herudover er der jo ingen garanti for
at en nyere version af en given jar, fungerer sammen med den kode man
har lavet.

At man herudover kan lave _EN_ klik-på-mig fil til slutbrugere, er
også en mærkbar forskel - man behøver ikke lave installationscripts,
og sære bat-filer, men kan bare sende JAR-filen pr mail fx.

Godt nok kan de resulterende jar filer blive temmeligt store (jeg
havde en på over 10 Mb sidst), men hukommelsesforbruget er så vidt jeg
kan se det samme, så det er kun diskpladsen til forskel.
Distributionen kan være et problem af store filer, men netop jar-filer
med deres komprimering på filniveau er særdeles velegnede til rsync.

Til sidst skal nævnes at der er adskillige jar->exe wrappere (som
giver mulighed for ikoner mv). Disse har det oftest nemt med en
enkelt jar, men bøvlet med flere. Kombinationen gør at man kan lave
noget der faktisk ligner et almindeligt, simpelt Windowsprogram.

Men som altid :) Det afhænger af hvad man skal bruge det til.
--
Thorbjørn Ravn Andersen


Thorbjørn Ravn Ander~ (28-03-2006)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 28-03-06 09:58

Janus <invalid@invalid.dk> writes:

> Spørgsmålet er vel egentlig af ret generel karakter mht brugen af
> eksterne JAR i Eclipse: Hvordan får jeg automatisk tilføjet de JARs
> der bliver benyttet i et projekt, således at de automatisk kommer med

http://fjep.sourceforge.net/

Godt til at lave "java -jar whatever.jar" ting med.
--
Thorbjørn Ravn Andersen


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

Månedens bedste
Årets bedste
Sidste års bedste