Avatar billede droa Novice
14. september 2011 - 15:35 Der er 10 kommentarer og
1 løsning

Putte Lib i main Jar

Hej eksperter.

Jeg tænkte om man kunne pakke mere end en pakke i samme Jar fil?
så man kunne bruge sine imports og stadig finde dem, uden at have mere end en nødvendig fil i alt.
Avatar billede arne_v Ekspert
14. september 2011 - 15:38 #1
Du kan ikke (med standard classloader) putte en jar fil ind i en anden jar fil.

Men du kan lade en jar fil tilfoeje en anden jar fil til classpath via manifest.

Hvis A.jar har et manifest med:

Class-Path: B.jar

og A.jar og B.jar bare ligger i samme dir, saa vil klasserne i A.jar kunne bruge klasserne i B.jar.
Avatar billede arne_v Ekspert
14. september 2011 - 15:38 #2
Avatar billede droa Novice
14. september 2011 - 15:44 #3
det var nu ikke så meget det jeg mente..
men f.eks når jeg builer min project i netbeans, laver den som standart en "lib" mappe med alle mine lib-jars i.
Normalt åbner jeg dem manuelt, og tilføjer mappen fra alle mine libs, til main.jar's rod mappe.. så jeg ikke har så mange libs, men kun 1 fil.

jeg tænkte om det ikke kunne gøres automatisk i netbeans
Avatar billede arne_v Ekspert
14. september 2011 - 15:49 #4
Jeg kender ikke NB specielt godt, saa jeg kan ikke hjaelpe med NB automatisering.

Er det en ren build ting eller kopierer den faktisk indholdet af jar filerne over i din main jar? (det sidste er nok ikke en god ide)
Avatar billede droa Novice
14. september 2011 - 21:36 #5
så der er ingen måde at lave en standalone fil, med java?
Avatar billede arne_v Ekspert
14. september 2011 - 21:46 #6
Saa skal du have alle klasserne fra de andre jar filer ind i din main jar.

Man kan goere det.

Men det goer opdatering af de andre jar filer problematisk.

Det er ioevrigt ikke saa forskelligt fra native.

Hvis man laver dynamisk linking saa kraever ens EXE visse DLL (i windows terminologi - i *nix terminologi vil det vaere executables og shared objects).

Hvis man linker statisk saa er det hele i en EXE.

De fleste linker dynamisk.
Avatar billede droa Novice
14. september 2011 - 22:00 #7
jeg tror jeg kan se ideen nu :)

så man kan eventuelt lave at ens "main.jar" henter de andre fra en "update" server, hvor man på den måde kun behøver at hente en fil?
Avatar billede arne_v Ekspert
14. september 2011 - 22:11 #8
Det er den avancerede loesning.

Den simplere er at man manuelt opdatere det lib som der er kommet en bug fix til.
Avatar billede droa Novice
14. september 2011 - 22:18 #9
arh okay.. når man tak for hjælpen. ligger du et svar?
Avatar billede arne_v Ekspert
15. september 2011 - 00:58 #10
Der findes classloadere som kan loade fra jar filer inden i jar filer.

Eks,:
  http://one-jar.sourceforge.net/

Men i 98% af tilfaeldene er flere jar file og Class-Path i manifest godt nok.
Avatar billede arne_v Ekspert
15. september 2011 - 00:58 #11
og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester