As I have now broken my projects in multiple projects, and things are getting complicated, So I decided it was time to try and build the thing with Maven (which would have come sooner or later, as I want to build a “plugin-based” engine, where the dependencies are downloaded automatically on the client using Maven).
I got a headstart by using GitHub - ahoehma/jme3-maven-helper: JMonkey Maven Helper
I got to the point where my jars are built, with proper Main entry in Manifest, as well as dependencies. The dependencies are also copied in a lib directory under where the jar is created, so that I should only have to do “java -jar client-0.0.1-SNAPSHOT.jar”, but then I get this when I try to run it. Maybe one of you know where I should look for a problem?
Exception in thread "AWT-EventQueue-0" java.util.MissingResourceException: Can't find bundle for base name com.jme3.app/SettingsDialog, locale en_US at java.util.ResourceBundle.throwMissingResourceException(Unknown Source) at java.util.ResourceBundle.getBundleImpl(Unknown Source) at java.util.ResourceBundle.getBundle(Unknown Source) at com.jme3.app.SettingsDialog.(SettingsDialog.java:75) at com.jme3.system.JmeDesktopSystem$3.run(JmeDesktopSystem.java:133) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.lang.NoClassDefFoundError: IllegalName: com.jme3.app/SettingsDialog at java.lang.ClassLoader.preDefineClass(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.util.ResourceBundle$Control.newBundle(Unknown Source) at java.util.ResourceBundle.loadBundle(Unknown Source) at java.util.ResourceBundle.findBundle(Unknown Source) at java.util.ResourceBundle.findBundle(Unknown Source) at java.util.ResourceBundle.findBundle(Unknown Source) ... 18 more
I especially don’t get what it’s got to do with bundles and " locale en_US". I don’t think I have done anything with resource bundles before, so maybe one needs more then just having the jars as dependencies in the manifest, and be there in the appropriate directory?
Here is the generated manifest, and the dependency jars seems to be the right ones, and are there where the manifest expects them. jMonkeyEngine3-3.0.0-SNAPSHOT.jar seems to contain the whole of the JME3 project (even the examples!) I think there are some unused dependencies in there, but I assume it should not be a problem.
Manifest-Version: 1.0 Built-By: monster Build-Jdk: 1.7.0_11 Class-Path: lib/jMonkeyEngine3-3.0.0-SNAPSHOT.jar lib/ovt-0.6.0.jar li b/j-ogg-vorbisd-2003.jar lib/j-ogg-oggd-2003.jar lib/noise-0.0.1-SNAP SHOT.jar lib/jme3-thirdparty-lwjgl-2.8.3-natives.jar lib/lwjgl-2.8.3. jar lib/jinput-2.0.5.jar lib/jutils-1.0.0.jar lib/asm-all-3.1.jar lib /vecmath-1.3.1.jar lib/nifty-1.3.1.jar lib/xpp3-1.1.4c.jar lib/eventb us-1.4.jar lib/nifty-default-controls-1.3.1.jar lib/nifty-examples-1. 3.1.jar lib/nifty-lwjgl-renderer-1.3.1.jar lib/lwjgl_util-2.8.2.jar l ib/nifty-style-black-1.3.1.jar lib/jbullet-3.0.0-SNAPSHOT.jar lib/sta ck-alloc-3.0.0-SNAPSHOT.jar lib/jsr305-1.3.9.jar lib/edu-umd-cs-findb ugs-annotations-1.3.2-201002241900.jar lib/annotations-1.3.2.jar lib/ javassist-3.16.1-GA.jar lib/hppc-0.4.1.jar lib/slf4j-log4j12-1.6.6.ja r lib/slf4j-api-1.6.6.jar lib/log4j-1.2.17.jar lib/commons-io-2.3.jar lib/commons-logging-1.1.1.jar lib/commons-lang-2.6.jar lib/guava-14. 0-rc2.jar lib/commons-vfs2-2.0.jar lib/maven-scm-api-1.4.jar lib/plex us-utils-1.5.6.jar lib/maven-scm-provider-svnexe-1.4.jar lib/maven-sc m-provider-svn-commons-1.4.jar lib/regexp-1.3.jar lib/ClientCore-0.0. 1-SNAPSHOT.jar lib/Assets-0.0.1-SNAPSHOT.jar lib/textassets-0.0.1-SNA PSHOT.jar lib/jmevoxeleditor-0.0.1-SNAPSHOT.jar Created-By: Apache Maven 3.0.4 Main-Class: com.blockwithme.client.Main Archiver-Version: Plexus Archiver
I skimmed over the Deployment section of https://wiki.jmonkeyengine.org/legacy/doku.php/jme3#tutorials_for_beginners, but did not see anything about resource bundles.
Also, just to prove that my manifest and dependencies are OK, I have added this as first lines before creating the app in the main, and I can see the output, so I know that SettingsDialog is accessible:
System.out.println("ACCESSING SettingsDialog ..."); System.out.println(SettingsDialog.class.getName());