Portál AbcLinuxu, 10. května 2025 11:05

Dotaz: Java classpath kompilace

30.12.2015 20:38 Xerces
Java classpath kompilace
Přečteno: 515×
Odpovědět | Admin
Ahoj, měl bych dotaz ohledně classpath v programovacím jazyku Java na místní Javatary. Předem se omlouvám za možná nepřesnou terminologii. Mám .jar soubor, který obsahuje nějakou třídu a tato třída využívá milion šest knihoven (jak už to tak s Javou bývá). Tyto knihovny jsou v různých adresářích a při spouštění je tedy nutné zadat classpath k těmto knihovnám a je to teda slušný počteníčko. Nešlo by nějak tuto classpath zakompilovat přímo do toho jar souboru, aby se to nemuselo zadávat při spuštění? Nechci jít cestou kompilace všech knihoven do jar souboru. Potřebuju mít uvnitř pouze tu classpath.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.12.2015 21:33 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Java classpath kompilace
Odpovědět | | Sbalit | Link | Blokovat | Admin
30.12.2015 22:42 Xerces
Rozbalit Rozbalit vše Re: Java classpath kompilace
Tu možnost se skriptem bohužel nemám. Ono se to nepouští z konzole, ale z nějaké jiné Java aplikace, kam lze vložit pouze jar soubor a vedle dopsat tu classpath. Pouští si to pak nějak interně. Přiznám se, že tomu moc nerozumím. Je tam jen kolonka pro zadání jar souboru a druhá pro případný řetězec classpath. Jediný co můžu ovlivnit je ten jar soubor, který tomu podstrkávám. Sloučení knihoven do .jar souboru bych se rád vyhnul, mělo by to pak stovky megabajtů (přitom ta utilita de facto jen kopíruje soubor :-)). Ale je možný, že to prostě nejde, i když se zdráhám uvěřit, že by všici co programují v Javě byly takový masochisti vyžívající se v psaní a modifikacích classpath. Zvlášť ve Windows to musí být chuťovka. :-/
30.12.2015 23:44 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Java classpath kompilace
Pokud je to takto, tak musíte tu classpath skutečně vypsat. O lepším řešením nevím.

Na vygenerování cesty si můžete napsat skript, já používám například skript, který mi vygeneruje cestu pro všechny jar v adresáři.

Pro spouštění reálných aplikací se používají taky buď skripty anebo jiné mechanismy, například java web start anebo loader, který si sám natáhne potřebné jarka.

-- OldFrog
31.12.2015 11:03 Xerces
Rozbalit Rozbalit vše Re: Java classpath kompilace
Díky za reakci, půjdu cestou toho MANIFEST souboru. Ono mi nešlo ani tak o generování. Spíše jde o případy, kdy ta classpath je tak nečekaně velká, že ji pak třeba začně něco ořezávat, nebo v případě kontroly, když se dohledává, proč to nefunguje. Pak se tím člověk musí pročítat jak Marxovým Kapitálem, protože většinou po ruce má jenom vzdálenou konzoli s Notepadem :-)
xkucf03 avatar 31.12.2015 00:18 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Java classpath kompilace
Odpovědět | | Sbalit | Link | Blokovat | Admin
Viz Adding Classes to the JAR File's Classpath, JDev: Including a Class-Path In Your MANIFEST.MF
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
31.12.2015 10:57 Xerces
Rozbalit Rozbalit vše Re: Java classpath kompilace
To bude přesně ono. Tak nějak se mi nechtělo věřit, že by to v tak úžasném jazyce nešlo. Snad to bude fungovat. Prosím označit vlákno jako solved. Děkuji.
31.12.2015 17:41 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Java classpath kompilace
Člověk se stále učí, netušil jsem, že to jde tak jednoduše, díky za info :-)
-- OldFrog
31.12.2015 22:13 Xerces
Rozbalit Rozbalit vše Re: Java classpath kompilace
No ono to tak jednoduché není. Ten MANIFEST je pěkná prasečina, Namátkou nutnost zarovnání na 70 + 2 znaků, problém s mezerami v názvech adresářů. Ale vypadá to, že to nakonec zlomím. :-)
xkucf03 avatar 31.12.2015 22:30 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Java classpath kompilace

Taky se nečeká, že to budeš psát ručně – mě by to řešit Ant, Maven nebo IDE či jiný nástroj.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
4.1.2016 10:42 Xerces
Rozbalit Rozbalit vše Re: Java classpath kompilace
Napsal a zalámal jsem to radši ručně (57 řádek). Nechtěl jsem ještě řešit/hledat případný chyby v Ant, nehledě na to, že to ani nemám nainstalovaný. Každopádně to skutečně zafungovalo. Pro pobavení resp. nas... posílám odkaz na krátkou diskuzi k tématu, aneb jak by to němelo vypadat, když se někdo na něco zeptá. :-) https://community.oracle.com/thread/2051019?start=0&tstart=0
4.1.2016 15:56 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Java classpath kompilace
No ale nedivte se - distribuovat jar s classpath odkazujícím někam do Program files je trochu špinavá praktika. Možná kdybyste na začátku uvedl, že to potřebujete pro vlastní potřebu ve speciélním případě a že víte, že to je hack, pak byste si možná ušetřil zbytečné reakce.
-- OldFrog
5.1.2016 12:02 Xerces
Rozbalit Rozbalit vše Re: Java classpath kompilace
To jsem nepsal já. Narazil jsem na tu diskuzi náhodou, když jsem hledal řešení svého problému. Mě na tom zarazila ta arogance s kterou ten expert sveřepě tvrdil, že to není potřeba :-) Vůbec si neuvědomil, že ten tazatel mohl být v situaci, kdy nic nevyyvíjí, ale pouze má za úkol rozjet existující aplikaci v nějakém obskurním prostředí. Ty poznámky o multiplatformním programování pak působí dost úsměvně. Každopádně obdivuju ten stoický klid tazatele.
5.1.2016 18:04 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Java classpath kompilace
Aha, tak to pardon :-) Mě ta diskuze nepřijde tak hrozná, trochu se to tam zacyklilo, ale v zásadě mají oba pravdu a na konci diskuze je řešení, takže co víc chtít...
-- OldFrog

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.