Hi.
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());