Creare un'unico file .jar su Netbeans

di Anonimizzato11068 il
13 risposte
Quando uso clean and build su Netbeans il programma mi genera un nuovo file .jar in "dist" e dentro quest'ultima aggiunge la directory "lib" che contiene le librerie che ho usato per creare il programma. Sapete se è possibile fare come in Eclipse ovvero compattare librerie esterne e codice dei package scritti di mio pugno in unico file .jar? Vorrei ottenere su Netbeans lo stesso file che l’antagonista mi genera automaticamente ed eventualmente scegliere anche il nome del programma compilato.

Grazie

13 Risposte

  • Raggruppare più file in un solo JAR con NetBeans: perché nessuno mi risponde? Ho aspettato 3 mesi per avere una risposta ma niente...

  • Se ho ben capito basta che esporti il tuo progetto come file jar e il gioco è fatto..
  • Della ha scritto:


    Se ho ben capito basta che esporti il tuo progetto come file jar e il gioco è fatto..
    Su Eclipse è così ma su NetBeans no!
    Sul secondo puoi esportare solo in .zip!
  • Prova a guardare qua, vedi se può esserti utile!
  • Quando creo il progetto ottengo questi file:

    dist/lib/libreria1.jar
    dist/lib/libreria2.jar
    dist/software.jar


    Le librerie che sono state importate per creare il progetto sono in cartelle separate:

    libreria1/libreria1.jar
    libreria2/libreria2.jar


    libreria1, libreria2, cartelle dist sono tutti situati all'interno della cartella del progetto.

    Ho aggiunto il seguente codice per il build.xml:
    <target name="-post-jar">
         <jar jarfile="dist/software.jar">
             <zipfileset src="${dist.jar}" excludes="META-INF/*" />
             <zipfileset src="dist/lib/libreria1.jar" excludes="META-INF/*" />
             <zipfileset src="dist/lib/libreria2.jar" excludes="META-INF/*" />
             <manifest>
                 <attribute name="Main-Class" value="pacco.classeprincipale"/>
             </ manifest>
         </ jar>
    </ target>
    Naturalmente c'è anche la cartella del progetto:

    src/pacco/classeprincipale.form
    src/pacco/classeprincipale.java


    Mi puoi dire cosa c'è di sbagliato? Il messaggio di errore che ottengo è il seguente:

    C:...\build.xml:75: Problem creating jar: archive is not a ZIP archive BUILD FAILED (total time: 2 seconds)



    NetBeans
  • Sinceramente non sono assolutamente esperto di ant, però prova con questo:
    
    <target name="-post-jar">
         <jar jarfile="dist/software.jar">
             <zipfileset src="${dist.jar}" excludes="META-INF/*" />
             <zipfileset src="lib/libreria1.jar" excludes="META-INF/*" />
             <zipfileset src="lib/libreria2.jar" excludes="META-INF/*" />
             <manifest>
                 <attribute name="Main-Class" value="pacco.classeprincipale"/>
             </ manifest>
         </ jar>
    </ target>
    
  • Niente da fare, ottengo questo errore:

    C:\...\build.xml:75: The archive libreria1.jar doesn't exist
    BUILD FAILED (total time: 6 seconds)
  • Io ho usato questo ed ha funzionato!
    
    <target name="-post-jar">
          <jar destfile="dist/nome_jar_finale.jar">
            <zipfileset src="${dist.jar}" excludes="META-INF/*" />
            <zipfileset src="dist/lib/nome_del_jar_da_includere.jar" excludes="META-INF/*" />
            <manifest>
                <attribute name="Main-Class" value="fully_qualified_name"/>
            </manifest>
          </jar>
        </target>
    
    Basta che sostituisci:
  • A me da questo errore:

    build.xml:76: Unexpected text "     "

    mi faresti leggere tutto il tuo xml? hai importato una sola libreria? io ne ho 2...

    la riga 76 è quella in qui trovi scritto:

    <jar destfile="dist/nome_jar_finale.jar">
  • Ho provato con 2 librerie e funziona tutto. Il file build.xml è il seguente (ho eliminato solo i commenti)
    
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="JavaApplication6" default="default" basedir=".">
        <description>Builds, tests, and runs the project JavaApplication6.</description>
        <import file="nbproject/build-impl.xml"/>
        <target name="-post-jar">
          <jar destfile="dist/final.jar">
            <zipfileset src="${dist.jar}" excludes="META-INF/*" />
            <zipfileset src="dist/lib/jsoup-1.7.2.jar" excludes="META-INF/*" />
            <zipfileset src="dist/lib/jtidy-r938.jar" excludes="META-INF/*"/>
            <manifest>
                <attribute name="Main-Class" value="JavaApplication6"/>
            </manifest>
          </jar>
        </target>
    </project>
    
    Le 2 librerie sono jsoup e jtidy, mentre la main class è nel package di default..
  • Che versioni di NetBeans usi? Io ho la 7.3...
    Se metti un package "prova" editi il tuo codice in questo modo:

    <attribute name="Main-Class" value="prova.JavaApplication6"/>

    ti funziona ugualmente il programma?

    Pazzesco, a me non funziona il tuo codice... non so più cosa inventarmi...

    errore: build.xml:6: Unexpected text "     "
  • La versione di netbeans è uguale alla tua. E se anche aggiungo un package (modificando build.xml) funziona tutto correttamente.
    Magari ti conviene aspettare qualcuno più esperto di me riguardo ad ant. Io, di fatto, non l'ho mai usato direttamente!
  • Si aspetto però questa cosa è proprio strana... dovrebbe funzionare senza problemi... stesse impostazioni... stessa versione del programma... misteri dell'informatica... mah...
Devi accedere o registrarti per scrivere nel forum
13 risposte