|  | 		    
					
        
         
          
         
	
          | |  | 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
            
             |  |  | 
 |  |