• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

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.