Java: Main-Class in bundle nicht auffindbar

comkee

Erdapfel
Registriert
02.06.06
Beiträge
4
Ich bin gerade dabei ein ANT build script zum Export von processing sketchen zu basteln. Web export als Applet und .app bundle ohne in packages verschachtelte Main-Class funktionieren. Nun der Fall das die Main in einem package verbaut ist – die Applikation startet, springt ein, zwei mal im Dock und verschwindet wieder. Im Terminal meint gdb das die Main nicht gefunden werden kann:
Code:
java.lang.ClassNotFoundException: Main
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
…

Nach allen möglichen trail and error Versuchen in der .plist und dem Manifest bin ich am Ende meines Lateins. Laut Informationen aus dem Netz ist es nur nötig den package Name vor den Klassennamen der Main class im Punkt MainClass zu packen. Hier die entsprechenden Auszüge aus den plist Dokumenten.

funktioniert:
Code:
<plist version="0.9">
<dict>
…
	<key>CFBundleIdentifier</key> 
	<string>Main</string>
	<key>Java</key>
	<dict>
		<key>VMOptions</key>
		<string>-Xms128M -Xmx256M</string>
		<key>MainClass</key>
		<string>Main</string>
		<key>JVMVersion</key>
		<string>1.3+</string>
		<key>ClassPath</key>
		<string>$JAVAROOT/Main.jar:$JAVAROOT/core.jar</string>


funktioniert nicht:
Code:
<plist version="0.9">
<dict>
…
	<key>CFBundleIdentifier</key> 
	<string>foo.Main</string>
	<key>Java</key>
	<dict>
		<key>VMOptions</key>
		<string>-Xms128M -Xmx256M</string>
		<key>MainClass</key>
		<string>foo.Main</string>
		<key>JVMVersion</key>
		<string>1.3+</string>
		<key>ClassPath</key>
		<string>$JAVAROOT/Main.jar:$JAVAROOT/core.jar</string>

Als Beispiel habe ich eine funktionierende und eine nicht funktionierende .app Version hochgeladen.

.app - funktioniert
.app – funktioniert nicht

Greift OS X beim Starten solch gepackter jars auf das Manifest zu? Alle üblichen Informationen sind ja in der .plist anzugeben.