tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1446
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Gambler79 Gambler79 ist offline Rookie
    Registriert seit
    Mar 2008
    Beiträge
    6
    Hallo,

    ich habe in meinem Netbeans-Projekt Ant ein "FatJar" gebaut. Das hat auch funktioniert. Leider kann ich das Jar nicht ausführen, bzw. es läuft nicht richitg. Es kommen keine ClassNotFound-Exceptions oder irgendeine andere Exception. Ich habe auch schon mit dem Classpath herumexperimentiert. Hat aber auch nichts gebracht. Hat noch irgendeiner ne Idee warum das Programm ohne irgendeine Meldung einfach durchläuft oder abbricht? ...

    Vielen Dank
     

  2. #2
    Avatar von Chefkoch333
    Chefkoch333 Chefkoch333 ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    112
    Hi,
    Java sucht beim ausführen deines JARs in der Manifest Datei /META-INF/manifest.mf nach der auszuführenden main Klasse. Diese wird im Property 'Main' definiert. (http://openbook.galileocomputing.de/...sel_28_004.htm)
    Ansonsten könnte es noch sein das dir andere Libs fehlene die du in deinem Programm nutzt. Dazu bräuchte man mal einer deiner ClassNotFoundExceptions um das weiter einzugrenzen.
    Du musst darauf achten das sämtliche benutzen libs im classpath verfügbar sind.

    vg,
    ck.
     

  3. #3
    fassy fassy ist offline Mitglied Bronze
    Registriert seit
    Jan 2010
    Beiträge
    42
    Es gibt einen ganz interessanten ANT Task um ein richtiges "FatJar" zu bauen. Der Task baut dir ein Jar in dem alle zur runtime benötigten Jars mit reingepackt werden.

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

    Im build.xml musst du gar nicht mal viel machen, den Task einbinden:

    Code xml:
    1
    2
    3
    4
    5
    6
    7
    
    <property name="one-jar.dist.dir" value="./lib/compile/" />
    <property name="one-jar.version" value="0.96" />
     
    <path id="oneJar.Classpath">
        <pathelement location="${basedir}/lib/one-jar-ant-task-${one-jar.version}.jar" />
    </path>
    <taskdef name="one-jar" classname="com.simontuffs.onejar.ant.OneJarTask" classpathref="oneJar.Classpath" />

    Dann noch fix ein Manifest anlegen:

    Code xml:
    1
    2
    3
    4
    5
    6
    
    <echo file="${build.dist}/${build.distname}.mf" append="false">
    Manifest-Version: 1.0
    Specification-Title: ${build.distname}
    Main-Class: com.simontuffs.onejar.Boot
    One-Jar-Main-Class: com.mypackage.MainClass
    </echo>

    Letzlich der Aufruf von dem OneJar Task:

    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    <one-jar destfile="${build.dist}/${build.distname}-standalone.jar" manifest="${build.dist}/${build.distname}.mf">
        <main>
            <fileset dir="${build.classes}">
                <include name="**/**" />
            </fileset>
        </main>
        <lib>
            <fileset dir="./lib/runtime">
                <include name="**/*.jar" />
             </fileset>
        </lib>
    </one-jar>

    Viele Grüße
    f.
    Geändert von fassy (21.01.10 um 13:14 Uhr)
     

Ähnliche Themen

  1. JSF "Komponenten dynamisch rendern" oder auch "die 'nächste' Seite beeinflussen"
    Von Wutklumpen im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 22.09.09, 13:51
  2. "Windows Server 2003" oder "Widnows Small Business"
    Von flukas im Forum Microsoft Windows
    Antworten: 6
    Letzter Beitrag: 07.07.08, 08:15
  3. Kann ich eine "Pipe" erstellen, oder wie geht OLE
    Von Gratemyl im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 22.07.04, 17:35
  4. Antworten: 0
    Letzter Beitrag: 03.02.04, 11:29
  5. Antworten: 15
    Letzter Beitrag: 04.09.01, 08:08