JBuilder [ANT] Anfängerfragen zu ANT und der main class

Smokers

Mitglied
Hallo,

ich soll mich mal ein wenig mit ANT beschäftigen und habe bisher folgende build.xml geschrieben.

[XML]<?xml version="1.0" ?>
<project name="PROJEKT" default="help" basedir=".">
<property name="src.dir" value="${basedir}/src"/>
<property name="bin.dir" value="${basedir}/bin"/>
<property name="lib.dir" value="${basedir}/lib"/>

<target name="init" depends="clean">
<mkdir dir="${bin.dir}"/>
</target>
<target name="clean">
<delete dir="${bin.dir}"/>
</target>


<target name="buildGUI" depends="init">
<javac srcdir="${src.dir}" destdir="${bin.dir}">
<classpath>
<fileset dir="${basedir}\lib">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
<jar destfile="PROJEKTGUI.jar" basedir="${basedir}">
<include name="lib"/>
<manifest>
<attribute name="Built-By" value="Us"/>
<attribute name="Implementation-Vendor" value="SSWTA PROJEKT"/>
<attribute name="Implementation-Title" value="PROJEKT"/>
<attribute name="Implementation-Version" value="0.7 beta"/>
<attribute name="Main-Class" value="de.uriuni.PROJEKT.in.gui.PROJEKTGui"/>
</manifest>
</jar>
</target>
</project>[/XML]


Meine Ordner-Struktur sieht zZ so aus :

Code:
├───bin
│   └───de
│       └───uriuni
│           └───PROJEKT
│               ├───dataStructs
│               │   └───data
│               │           Data.class
│               │           Exam.class
│               │           OptimizedSeatingPlan.class
│               │           Room.class
│               │           RoomResources.class
│               │           RoomStructure.class
│               │           Student.class
│               │           SVG.class
│               │
│               ├───in
│               │   ├───cli
│               │   │       PROJEKTCli.class
│               │   │       PROJEKTCLILoadConfig.class
│               │   │       PROJEKTCliOperandParser.class
│               │   │       PROJEKTCliOptions.class
│               │   │       PROJEKTCliSimpleDate.class
│               │   │
│               │   ├───gui
│               │   │       PROJEKTGui$1.class
│               │   │       PROJEKTGui$10.class
│               │   │       PROJEKTGui$11.class
│               │   │       PROJEKTGui$12.class
│               │   │       PROJEKTGui$13.class
│               │   │       PROJEKTGui$14.class
│               │   │       PROJEKTGui$15.class
│               │   │       PROJEKTGui$16.class
│               │   │       PROJEKTGui$2.class
│               │   │       PROJEKTGui$3.class
│               │   │       PROJEKTGui$4.class
│               │   │       PROJEKTGui$5.class
│               │   │       PROJEKTGui$6.class
│               │   │       PROJEKTGui$7.class
│               │   │       PROJEKTGui$8.class
│               │   │       PROJEKTGui$9.class
│               │   │       PROJEKTGui.class
│               │   │       PROJEKTGuiCalc$1.class
│               │   │       PROJEKTGuiCalc$2.class
│               │   │       PROJEKTGuiCalc$Task.class
│               │   │       PROJEKTGuiCalc.class
│               │   │       PROJEKTGuiDatePicker$PROJEKTDayLabel.class
│               │   │       PROJEKTGuiDatePicker$PROJEKTMonthPanel.class
│               │   │       PROJEKTGuiDatePicker$PROJEKTNavigatePanel.class
│               │   │       PROJEKTGuiDatePicker.class
│               │   │       PROJEKTGuiHelp.class
│               │   │       PROJEKTGuiObserver.class
│               │   │
│               │   └───initial
│               │           ConfigtoCLI.class
│               │           Init.class
│               │           Initialiser.class
│               │           RoomResources.class
│               │
│               ├───optimize
│               │   └───optimizer
│               │           EvoOptimizer.class
│               │           Opti.class
│               │           Optimizer.class
│               │
│               └───out
│                   ├───preparer
│                   │       DemoValueClass.class
│                   │       Prep.class
│                   │       Preparer.class
│                   │       StudentDivider.class
│                   │
│                   └───printers
│                           Pdf.class
│                           Printer.class
│                           Xml.class
│
├───lib
├───resources
│   ├───export
│   ├───images
│   │   └───datepicker
│   ├───locales
│   ├───locations
│   │   ├───svg
│   │   └───xml
│   └───tests
└───src
    └───de
        └───uriuni
            └───PROJEKT
                ├───dataStructs
                │   └───data
                │           Data.java
                │           Exam.java
                │           OptimizedSeatingPlan.java
                │           Room.java
                │           RoomResources.java
                │           RoomStructure.java
                │           Student.java
                │           SVG.java
                │
                ├───in
                │   ├───cli
                │   │       PROJEKTCli.java
                │   │       PROJEKTCLILoadConfig.java
                │   │       PROJEKTCliOperandParser.java
                │   │       PROJEKTCliOptions.java
                │   │       PROJEKTCliSimpleDate.java
                │   │
                │   ├───gui
                │   │       PROJEKTGui.java
                │   │       PROJEKTGuiCalc.java
                │   │       PROJEKTGuiDatePicker.java
                │   │       PROJEKTGuiHelp.java
                │   │       PROJEKTGuiObserver.java
                │   │
                │   └───initial
                │           ConfigtoCLI.java
                │           Init.java
                │           Initialiser.java
                │           RoomResources.java
                │
                ├───optimize
                │   └───optimizer
                │           EvoOptimizer.java
                │           Opti.java
                │           Optimizer.java
                │
                └───out
                    ├───preparer
                    │       DemoValueClass.java
                    │       Prep.java
                    │       Preparer.java
                    │       StudentDivider.java
                    │
                    └───printers
                            Pdf.java
                            Printer.java
                            Xml.java

Im eclipse rufe ich die GUI halt zZ auf indem ich die Klasse PROJEKTGui.java starte.
Wenn ich nun mein BuildFile ausführe, dann bekomme ich halt die Meldung das die main class nicht gefunden wurde ( de.uriuni.PROJEKT.in.gui.PROJEKTGui )

Hat da jemand eine Idee :-/ ?
 

mvitz

Top Contributor
Nunja, erstmal müsste dein JAR Basedir ${bin.dir} sein und zweitens funktioniert es nicht ohne weiteres einfach die ganzen JARs aus lib mit in ein JAR zu packen.
 

Smokers

Mitglied
mhh okay :-/...warum geht das mit dem einbinden der libs halt nicht so einfach?
das mit dem base dir dank ich dir schonmal werd ich morgen früh wenn ich nen rechner in der hand hab gleich mal versuchen umzusetzen.... danke :)
 

MarderFahrer

Gesperrter Benutzer
Was genau möchtest du mit den jars im lib Verzeichnis machen? Sollen die alle in dein jar reingepackt werden? Oder soll dein jar "nur" auf die anderen jar zugreifen können? Sprich, sie müssten neben deinem jar existieren?

Falls die jars alle in dein jar gepackt werden sollten, so geht das schon. Unter eclipse gibt es im Export Bereich ja eine Option, die man aktivieren kann. Ich habe mir das ganze vor kurzem auch einmal angeschaut, da ich ebenfalls libs zu meinem jar hinzufügen wollte.

Eclipse benutzt dazu einen "jar-in-jar-loader.zip". Ich habe dann versucht, mittels Ant einen Build zu erstellen, der das selbe Ergebnis liefert wie ein Export unter Eclipse mit der Option "include libs in jar file".
Das Ergebnis sieht so aus:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<project name="NameOfMyProject" basedir="." default="main">

<property name="src.dir" value="src"/>

<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>

<property name="main-class" value="com.package.path.to.my.app.projectName"/>

<property name="lib.dir" value="lib"/>

<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>


<target name="clean">
<delete dir="${build.dir}"/>
</target>

<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
</target>

<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/myApp.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"/>
<attribute name="Rsrc-Main-Class" value="com.package.path.to.my.app.projectName"/>
<attribute name="Class-Path" value="."/>
<attribute name="Rsrc-Class-Path" value="./ args4j-2.0.9.jar TestLib-src.jar commons-collections-3.2.1.jar commons-lang-2.3.jar commons-logging-1.1.1.jar cxf-2.2.10.jar jaxb-impl-2.1.13.jar jaxb-xjc-2.1.13.jar mail-1.4.jar saaj-api-1.3.jar saaj-impl-1.3.2.jar velocity-1.6.4.jar wsdl4j-1.6.2.jar wss4j-1.5.8.jar wstx-asl-3.2.9.jar xml-resolver-1.2.jar XmlSchema-1.4.5.jar xmlsec-1.4.3.jar"/>
</manifest>
<zipfileset src="./jar-in-jar-loader.zip"/>
<fileset dir="${lib.dir}" includes="**/*.jar" />
</jar>
</target>

<target name="main" depends="clean,jar"/>

</project>
[/XML]

Der eigentliche Sinn besteht offenbar darin, im jar manifest als Main den jarinjarloader zu benennen. Die eigentliche Programm Main wird dann unter Rsrc-Main-Class definiert. Zusätzlich muss dann noch jedes jar im Rsrc-Class-Path angegeben werden. Könnte auch sein, dass man hier mit *.jar arbeiten kann. So hab ich das irgendwo im Netz gefunden und es hat funktioniert, also hab ich es nicht mehr verändert.

Das ganze wird bestimmt keinen Schönheitswettbewerb gewinnen und ich bin mir nicht mal sicher ob man das zwingend so machen muss oder ob es noch "schöner/eleganter" geht, aber auf diese Weise bekomme ich zumindest mein Programm mit externen libs compiliert und zusammengepackt als ein ausführbares jar.
 

Smokers

Mitglied
Also ideal Fall wäre die output Struktur:

projekt
│ Libraries.jar
│ ProjektCLI.jar
│ ProjektGUI.jar

└───raeume
raum1.svg
raum2.svg
raum3.svg
raum4.svg


Also die libraries können schon gepackt sein, jedoch in einer extra jar.
vorallem sollen die raeume im extra ordner vorhanden sein, damit auch selber raume hinzugefügt werden können vom benutzer...

wäre das irgendwie machbar?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S NetBeans; Anfängerfragen.insbesondere zur Main - Class IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
A Eclipse Eclipse SVN Anfängerfragen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
T Eclipse Git "Could not find or load main class" IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
T NetBeans NetBeans IDE 13 | Cannot find main class IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
W Eclipse Rechnerabsturz - Datei der Main zerstört? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 15
B Fehlermeldung: Selection does not contain a main type IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
B Kompilieren in Eclipse ( 2 Klasse ohne main()-Methode) IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
T Eclipse - Keine Vorschläge außerhalb main-Methode IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 9
M Intellij IDEA Programm ohne Main-Methode starten IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
J Error: Could not find or load main class xyz (Eclipse) IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
wolfgang63 Eclipse findet main-methode nicht IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
N [ANT] Invalid signature file digest for Manifest main attributes IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
S Findet 'main' in Eclipse nicht IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
K Eclipse automatische main Klasse - Formatierung ändern ? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
E Eclipse Jar-File [,,Could not find the main class - program will exit"] IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 25
H NETBEANS 7.0 - Run findet kein main() IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
H diverse IDEs: main-class nicht gefunden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
J Main Methode in Netbeans IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
N NetBeans "main class not found" in NetBeans IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 17
B Eclipse: Could not find the main Class IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 15
T NB6.5: Fehler beim ausführen einer (Main)Klasse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
E could not fin d the main class. program will now exit IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 14
F Selection does not contain a main type IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
M mal wieder Could not finde the main class.Program will exit IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
B Netbeans Run main() mit args IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
G parameter an main übergeben in eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
B Probleme beim erstellen von Java Class IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
M HILFE! Class wird doppelt erzeugt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
I Eclipse Ant: Class not Found IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
H Eclipse SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
J NetBeans Netbeans, Linux -> Was ist ein "bootstrap class path error" und wie kann man das wegbekommen? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
R Auf einmal viele Class-Files weg IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 16
M Eclipse Class-Datei exportieren IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
C Eclipse Wie kann ich .class-Datei mit eclipse importieren? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 9
R Eclipse Class File Editor IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 11
S Eclipse Versionswechsel, visual class IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
S NetBeans Serializable Class ohne package IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
C Eclipse Open Type soll keine .class anzeigen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
S NetBeans class, jar, package. Wie am besten machen bei Applet mit Web-Projekt? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
sc0p Eclipse: .class nicht editierbar IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
J NetBeans JUnit 4.5: initialization Error caused an ERROR: Test class can only have one constructor IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
J class-File-Splitter-Tool gesucht IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
A IntelliJ zeigt meine class-Files nicht an!? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
T Eclipse, Breakpoints, TimerThread,class IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
J class-dateien verschwunden (eclipse) IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
G class not found exception / Source not found - Eclipse Ganym IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
K class importieren [eclipse] IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
J Eclipse erzeugt mir keine .class-Dateien mehr IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
G Eclipse: .class wird nicht angelegt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
N Eclipse-Class-Date in Tomcat - Bad Version Number IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
B Externe Class-Dateien ins Jar-Archiv aufnehmen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
G Eclipse - Class-Dateien einfügen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
S Verwendung von class-Dateien in Eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
M [Netbeans] Class Datei einbinden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
S Borland JBuilder: .class bzw. .jar erstellen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
J Fenster öffnen per Button klick erstellt mit Visual Class IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
M NetBeans 3.6: class-Files Ausgabepfad festlegen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
M Eclipse - Class File Editor -> Source not found IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2

Ähnliche Java Themen


Oben