|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2001
Città: Prov. di Frosinone
Messaggi: 948
|
[Java] File .jar ed il Classpath nel manifest
Ciao
![]() Come cacchio si setta l'attributo "Class-Path:" del file manifest.mf di un jar, se è parecchio lungo? Inserendo qualche cosa di simile funziona tutto: Class-Path: lib/ant.jar lib/commons-codec-1.3.jar lib/commons-el.jar Ma nel mio caso ho davvero parecchi jar, e quindi la riga diventa troppo lunga: in fase di avvio del file mi compare il messaggio di errore: Exception in thread "main" java.io.IOException: line too long at java.util.jar.Attributes.read(Attributes.java:362) at java.util.jar.Manifest.read(Manifest.java:167) at java.util.jar.Manifest.<init>(Manifest.java:52) at java.util.jar.JarFile.getManifestFromReference(Jar File.java:15 at java.util.jar.JarFile.getManifest(JarFile.java:145 ) Ho trovato questo messaggio su un blog (è vecchiotto però... parliamo di fine 2004) e si parla di come risolvere questo problema http://jroller.com/page/apolci?entry...h_molto_grandi Tuttavia questa soluzione non sembra cmq funzionare. In fase di avvio mi compare il messaggio: Invalid o corrupt jarfile Questo è il mio corrente manifest Codice:
Manifest-Version: 1.0 Main-Class: StartCrawl Class-Path: lib/ant.jar lib/commons-cli-2.0-SNAPSHOT.jar lib/commons-codec-1.3.jar lib/commons-el.jar lib/commons-httpclient-3.0.1.jar lib/commons-lang-2.3.jar lib/commons-logging.jar lib/commons-logging-1.1.jar lib/commons-logging-adapters-1.1.jar lib/commons-logging-api-1.1.jar lib/hadoop-0.12.3-core.jar lib/jakarta-oro-2.0.7.jar lib/jasper-compiler.jar lib/jasper-runtime.jar ib/jets3t-0.5.0.jar lib/jetty-5.1.4.jar lib/jsp-api.jar lib/junit-3.8.1.jar lib/log4j-1.2.13.jar lib/lucene-core-2.1.0.jar lib/lucene-misc-2.1.0.jar lib/nutch-0.9.jar lib/resolver.jar lib/serializer.jar lib/servlet-api.jar lib/xercesImpl.jar lib/xercesSamples.jar lib/xml-apis.jar Grazie ![]() Ultima modifica di Edde : 09-07-2007 alle 16:34. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2001
Città: Prov. di Frosinone
Messaggi: 948
|
Uppo
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Assicurati che al fondo del file ci sia un newline e che tra la fine del nome di un jar e il successivo sulla riga seguente ci siano almeno 2 spazi.
..certo che avrebbero anche potuto strutturarlo meglio il manifest... ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 10-07-2007 alle 09:49. |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2001
Città: Prov. di Frosinone
Messaggi: 948
|
Quote:
E riga vuota finale. Visto che non andava poi ho fatto anche diverse prove (tolgo lo spazio lì, ne metto un altro là e cose simili ![]() Adesso *sembra* (e qui mi gratto) che abbia risolto il problema, ma in un modo che non può certo considerarsi elegante... la riga del Class-path non può essere molto lunga? Ed io ho scompattato alcuni jar sparsi e li ho ricompattati in jar "tematici": uno che raccolga tutto il pacchetto dei vari commons-logging, tutti quelli di xerces in uno solo e così via... ora i jar sono di meno, e posso metterli su di un'unica riga. Però è una soluzione temporanea... non credo che si possa accettare una cosa simile ![]() |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Fai un jar con la seguente classe:
Codice:
import java.util.*; import java.util.jar.*; public class Prova { public static void main (String[] args) { try { JarFile jf = new JarFile ("prova.jar"); Manifest m = jf.getManifest (); Attributes attr = m.getMainAttributes (); for (Map.Entry<Object,Object> e : attr.entrySet ()) System.out.println (e.getKey () + " = \"" + e.getValue () + "\""); } catch (Exception e) { System.out.println (e); } } } Lo vedi subito se il classpath è corretto ... manda l'output su un file e poi editalo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2005
Messaggi: 390
|
Ciao, quale application server usi per il deploy della tua applicazione?
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Oct 2001
Città: Prov. di Frosinone
Messaggi: 948
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:22.