| 

.NET C# Java Javascript Exception

jar aus groovy erzeugen - manifest datei

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


jar aus groovy erzeugen - manifest datei

mabu - 03.09.2010 20:26
Hallo beisammen,

derzeit beschäftige ich mich damit, aus groovy-Skripts eigenständige Programme zu machen. Die praktischste Variante ist,
sie in ein "jar" zu packen, da man *.jar Dateien in der Regel immer mit Java ausführen kann.

mit groovyc kann man ja wunderbar class-Files erstellen. So weit so gut.
es gibt auch dieses praktische Tool "jar" um "jar"-Files zu machen ("jar -cvf MeinProg.jar MeineKlasse.class")

Aber: Man braucht dafür eine manifest-Datei. Hat da jmd. schon Erfahrung mit gemacht? Ich hab oft gelesen, dass man
in der manifest-Datei angeben muss, welche Klasse die main-Methode enthält. Mein Script hat aber eigentlich gar keine
Klassen o.ä. (ist halt ein richtiges Skript ;-) )
Geht das trotzdem?

Grüße


Re: jar aus groovy erzeugen - manifest datei

Wicki - 04.09.2010 12:15
Hallo,

Jedes Skript wird zu einer java-Klasse umgewandelt und hat auch eine main-Methode. Guck doch einfach mal in den class-Code rein. Jar-Files lasse ich immer mit Ant und einem geeigneten buil.xml-File erzeugen. Da sind alle erforderlichen oder von Dir gewünschten Klassen drin und die manifest-Datei wird ebenfalls generiert, i.a. ohne Angabe der main-Klasse, was auch nicht erforderlich ist.


Re: jar aus groovy erzeugen - manifest datei

mabu - 04.09.2010 15:32
Hmm... ok danke für den Hinweis,
viel weiter hat es mich leider nicht gebracht... Wie machst du da mit "ant" genau? Gibt es dazu irgendwo eine passende Anleitung?

Vielleicht hab ich mich auch zu allgemein ausgedrückt. Machen wir mal ein konkretes Beispiel:
Zum Üben für das Erstellen von Jar-Files nehmen wir mal ein einfaches Script:
def parameters = []
if(args.length>0){
   args.each{ parameters << it}
   println "Given parameters" + parameter
}
else{
   println "No parameters given"
}
Sooo, das gibt die Parameter aus, wenn welche übergeben wurden. Mit
groovyc parameters.groovy
erhalte ich zwei Class-Files: parameters.class und parameters$_run_closure1.class
Das alles packe ich dann in ein jar-File mit
jar -cvf parameters.jar parameters.class parameters$_run_closure1.class
Wenn ich dann im Anschluss das Programm aufrufe
java -jar parameters.jar
dann kommt eine Fehlermeldung:
Failed to load Main-Class manifest attribute from paramters.jar
Also ist wohl die Manifest-Datei schuld. Ok, ich hab ja auch noch keine gemacht. Aber wie müsste das dann aussehen?
Testweise hab ich nun schon ettliches probiert, aber nichts hat zu einem Ergebnis geführt. Meine Manifest sieht dann so aus:
Manifest-Version: 1.0
Created-By: Me
Built-By: Me
Main-Class: parameters
Das resultiert aber praktisch immer in einem "NoClassDefFoundError"...
Was ein Mist...
Weiß da jmd weiter? Oder wie ich das mit "ant" lösen kann? Wie muss dann die build.xml aussehen?
Vielen Dank schon mal,
Grüße


Re: jar aus groovy erzeugen - manifest datei

Wicki - 04.09.2010 19:59
Hallo,

hier ein Beispiel für die manifest.mf:
Manifest-Version: 1.0
Created-By: Me
Built-By: Me
Main-Class: parameters
Class-Path: embeddable/groovy-all-1.7.3.jar
Der Class-Path muß natürlich angepasst werden, er zeigt auf Groovys allumfassende jar-Datei.
Mit Ant ist das anfangs etwas umständlich, aber wenn Du erstmal ein passendes build-File hast, ist das eine bequeme Sache. Wenn Du eine passende IDE (Netbeans,Eclipse) nutzt, wird das jar-File automatisch anwendungsreif für Java erstellt.

Gruß Wicki


Re: jar aus groovy erzeugen - manifest datei

mabu - 06.09.2010 07:56
Danke für den Tip,
die groovy-Bibliothek hatte ich bisher außer Acht gelassen. Dann werd ich das
mal so versuchen, wenn's nicht klappt meld ich mich nochmal ;-)

Grüße


Re: jar aus groovy erzeugen - manifest datei

mabu - 06.09.2010 13:52
Hey, ich nochmal,
das hat super geklappt, danke für den Hinweis.
Hab inzwischen auch mal NetBeans getestet, das läuft auch einwandfrei. Hätt mir auch gleich einfallen können
naja, hinterher ist man immer schlauer, aber hat noch was gelernt dabei.

Jetzt hab ich ja eine ausführbare jar-File und brauch ja auch noch die Bibliothek dazu. NetBeans hat sie in einen
neckischen Ordner namens "lib" abgelegt, damit man das ausführen kann. Macht ja auch Sinn, die Bibliothek mitzuliefern,
da nicht zwangsläufig jeder Groovy installiert hat.

Chic wäre es jetzt noch, das ganze Geraffel in "eine Anwendung" zu packen. Unter Windows wäre das dann vergleichbar
mit einer *.exe oder unter Mac einem *.app.

Meine Frage dazu: Weiss da jmd. Bescheid, ob man das noch kapseln kann? Dass man praktisch nur ein ausführbares
Programm hat, das man einfach ausführen kann, ohne dass man noch sieht dass da Bibliotheken und Krams drin stecken?

Grüße


Re: jar aus groovy erzeugen - manifest datei

manfred - 06.09.2010 14:01
Für Windows gibts verschiedene freie und kostenpflichtige Tools, die aus einer oder mehrerer Jars eine .exe machen können. Zum Teil ist das auch Scriptbar und damit mit Ant oder einem anderen Build-Tool automatisierbar.
Für Mac OS X gibts das Tool "Jar Bundler". Das ist beim Xcode developer packet dabei und erstellt ein App Bundle framework. App bundles unter Mac OS X sind ja quasi nur Verzeichnisse die speziell gehandhabt werden.


Manfred


Re: jar aus groovy erzeugen - manifest datei

mabu - 06.09.2010 14:12
Perfekt, genau das hab ich gesucht!
Danke für die schnelle Antwort, dann werd ich mich jetzt mal wieder
fleißig ans Coden machen ;-)
Viele Grüße


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "jar aus groovy erzeugen - manifest datei" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.