08. november 2004 - 15:26Der er
11 kommentarer og 2 løsninger
class-path, manifest-filer og jar
Sikkert FAQ men google holder det som en hemmelighed så... :-)
Jeg har en lille applikation, der er pakket i en jar fil. Applikationen gør brug af en 3. parts db.driver, men af opdateringsmæssige årsager er jeg ikke interesseret i at inkludere 3.parts' jar filer i min egen jar-fil. De skal ligge i et dir, jeg kalder lib, således, at jeg har følgende struktur: / /lib /minjar.jar
I min manifest.mf har skrevet: Class-Path: . ./lib/ men ved at bruge System.getProperty( "java.class.path" ) i min main, kan jeg se, at det eneste i min classpath er minjar.jar (skrive med ; istedet for [mellemrum] hjælper ikke, den fulde sti er ikke brugbar, da min app også skal køre på *nix maskiner).
Jeg har prøvet at skrive en bat-fil, hvor jeg først sætter classpathen, men det funger heller ikke.
Jeg vil gerne kunne nøjes med at tilføje et dir til classpath'en, og ikke hver enkelt 3.part jar, nogle af jar'ene navngives med versions nummer.
kun et . (det er relativt til minjar.jar) men det sux jo totalt, at man skal definere de respektive jars - så ryger pointen med at have udenfor min jar lige som lidt...
men det er jo heller ikke fedt, at skulle pille i manifestet 'bare fordi' en andens jar-fil bliver opdateret... æv! er det eventuelt anden måde at løse problemet på?
1) Jeg synes netop at det er en fordel at din jar bruger version 1.2.3 af software XYZ selvom version 1.2.4 ligger ved siden af. Fordi din software er jo testet mod 1.2.3. Hvis du tester den mod 1.2.4 så kan du jo passende opdatere manifestet.
2) Software oppe i enterprise klassen vil typisk bruge sin egen classloader og så kan man skrive en classloader der tager alle jar filer i et bestemt dir. Men det er så en lidt anden kontekst.
Sorry - havde ingen idee om, at det var saadan det funger :-)
Synes godt om
Ny brugerNybegynder
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.