bbarker/SME

Trouble building HelloCollision

bbarker opened this issue · 6 comments

See discussion for the issue on the JME forums. The Java example works with Gradle:

brandon@brandon-750-170se:/media/brandon/portadrive/projects/HelloCollision-on-Gradle$ gradle build
:compileJava
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-core/3.1.0-stable/jme3-core-3.1.0-stable.pom
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-bullet/3.1.0-stable/jme3-bullet-3.1.0-stable.pom
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-bullet-native/3.1.0-stable/jme3-bullet-native-3.1.0-stable.pom
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-desktop/3.1.0-stable/jme3-desktop-3.1.0-stable.pom
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-jogg/3.1.0-stable/jme3-jogg-3.1.0-stable.pom
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-lwjgl/3.1.0-stable/jme3-lwjgl-3.1.0-stable.pom
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-plugins/3.1.0-stable/jme3-plugins-3.1.0-stable.pom
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-terrain/3.1.0-stable/jme3-terrain-3.1.0-stable.pom
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-core/3.1.0-stable/jme3-core-3.1.0-stable.jar
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-bullet/3.1.0-stable/jme3-bullet-3.1.0-stable.jar
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-bullet-native/3.1.0-stable/jme3-bullet-native-3.1.0-stable.jar
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-desktop/3.1.0-stable/jme3-desktop-3.1.0-stable.jar
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-jogg/3.1.0-stable/jme3-jogg-3.1.0-stable.jar
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-lwjgl/3.1.0-stable/jme3-lwjgl-3.1.0-stable.jar
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-plugins/3.1.0-stable/jme3-plugins-3.1.0-stable.jar
Download https://jcenter.bintray.com/org/jmonkeyengine/jme3-terrain/3.1.0-stable/jme3-terrain-3.1.0-stable.jar
:processResources UP-TO-DATE
:classes
:jar
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build

BUILD SUCCESSFUL

Total time: 14.239 secs

And it runs using:

gradle -PmainClass=jme3test.helloworld.HelloCollision execute

A very odd workaround that I haven't been able to use so far to fix this properly: if I run the gradle example on the same system, the run the example in SBT, it works! I need to look at differences between ~/.ivy2/cache/org.jmonkeyengine on two different systems, but the top-level directory structure looks the same:

$ ls -1 ~/.ivy2/cache/org.jmonkeyengine
jme3-blender
jme3-bullet
jme3-bullet-native
jme3-core
jme3-desktop
jme3-effects
jme3-examples
jme3-jbullet
jme3-jogg
jme3-jogl
jme3-lwjgl
jme3-networking
jme3-niftygui
jme3-plugins
jme3-terrain

md5sums on working system:

$ find ~/.ivy2/cache/org.jmonkeyengine/ -name '*.jar' | xargs md5sum
56a0f612667658eed0f6848e4fe38506  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-core/jars/jme3-core-3.1.0-stable.jar
233e9d8b5738b6a01a08c95263d8e26c  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-core/srcs/jme3-core-3.1.0-stable-sources.jar
a3587616adb4680864c40f5bc14f8f95  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-examples/jars/jme3-examples-3.1.0-stable.jar
a9f1308bc2fbcbbd861fe2a91b1dd362  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-examples/srcs/jme3-examples-3.1.0-stable-sources.jar
907c48eae8f77ca9d7acdf3b3ae64154  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-niftygui/jars/jme3-niftygui-3.1.0-stable.jar
26826bba2aad7227b7af68f51a82b738  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-niftygui/srcs/jme3-niftygui-3.1.0-stable-sources.jar
d896fb4e2cf2f014a748c80c6d6e381d  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-blender/jars/jme3-blender-3.1.0-stable.jar
1b3721891734304bfb32198bb8f39701  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-blender/srcs/jme3-blender-3.1.0-stable-sources.jar
c4b53a940dd4aeb202c1a11cd2d96def  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-desktop/jars/jme3-desktop-3.1.0-stable.jar
83ce9615c80b2231b91436591115ef84  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-desktop/srcs/jme3-desktop-3.1.0-stable-sources.jar
98a234864d16d35dafdcf9d2661db50e  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-effects/jars/jme3-effects-3.1.0-stable.jar
32681f74845f67829b35fcac9a797a68  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-effects/srcs/jme3-effects-3.1.0-stable-sources.jar
72d7b2546ec3d2272bc036aa805fc5c1  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-jogg/jars/jme3-jogg-3.1.0-stable.jar
56f575e9a32f80d770b8d1cba8c6b373  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-jogg/srcs/jme3-jogg-3.1.0-stable-sources.jar
9ce70a737c00150b6dbfa1e99b29062f  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-jogl/jars/jme3-jogl-3.1.0-stable.jar
8a08bd0b96823ffad68f0f4a3a75b1ac  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-jogl/srcs/jme3-jogl-3.1.0-stable-sources.jar
8b2446b100a1f3f591d838501f2102d4  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-networking/jars/jme3-networking-3.1.0-stable.jar
c928ad8125c4bc34c3e02105f6016c3d  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-networking/srcs/jme3-networking-3.1.0-stable-sources.jar
f02d07646edbbaf85ba85232b06f9759  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-lwjgl/jars/jme3-lwjgl-3.1.0-stable.jar
e66b5230aee9e3d43576e6a94d13e2ff  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-lwjgl/srcs/jme3-lwjgl-3.1.0-stable-sources.jar
f4b981957dea7613d3a563b26f3fa68b  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-terrain/jars/jme3-terrain-3.1.0-stable.jar
0c49d34989e2476f9fd379f4e9c58318  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-terrain/srcs/jme3-terrain-3.1.0-stable-sources.jar
983a8ba238d46299a7ac0742caf12ffd  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-plugins/jars/jme3-plugins-3.1.0-stable.jar
6a62975b2d38d2a2be6a1522e681d882  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-plugins/srcs/jme3-plugins-3.1.0-stable-sources.jar
0308932f57c88fe015d9b8e045d83cc0  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-bullet/jars/jme3-bullet-3.1.0-stable.jar
e04435c278756143378f49a8c313aa7e  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-bullet/srcs/jme3-bullet-3.1.0-stable-sources.jar
83bb67dc6363447a64d47754df26964e  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-bullet-native/jars/jme3-bullet-native-3.1.0-stable.jar
8663ed16f062efce3901ef76eecaf66d  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-bullet-native/srcs/jme3-bullet-native-3.1.0-stable-sources.jar
2b89968df541327a891b6c49a17292c2  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-jbullet/jars/jme3-jbullet-3.1.0-stable.jar
c6cf63666f31e5c1b4ef930853a7654d  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-jbullet/srcs/jme3-jbullet-3.1.0-stable-sources.jar

md5sums on the bad system are all present except lwjgl3, which I added only as a test:

$ find ~/.ivy2/cache/org.jmonkeyengine/ -name '*.jar' | xargs md5sum
9ce70a737c00150b6dbfa1e99b29062f  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-jogl/jars/jme3-jogl-3.1.0-stable.jar
2b89968df541327a891b6c49a17292c2  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-jbullet/jars/jme3-jbullet-3.1.0-stable.jar
98a234864d16d35dafdcf9d2661db50e  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-effects/jars/jme3-effects-3.1.0-stable.jar
a3587616adb4680864c40f5bc14f8f95  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-examples/jars/jme3-examples-3.1.0-stable.jar
f4b981957dea7613d3a563b26f3fa68b  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-terrain/jars/jme3-terrain-3.1.0-stable.jar
907c48eae8f77ca9d7acdf3b3ae64154  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-niftygui/jars/jme3-niftygui-3.1.0-stable.jar
56a0f612667658eed0f6848e4fe38506  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-core/jars/jme3-core-3.1.0-stable.jar
983a8ba238d46299a7ac0742caf12ffd  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-plugins/jars/jme3-plugins-3.1.0-stable.jar
2aeff383790b1841cc84341215d590cc  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-lwjgl3/jars/jme3-lwjgl3-3.1.0-stable.jar
8b2446b100a1f3f591d838501f2102d4  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-networking/jars/jme3-networking-3.1.0-stable.jar
d896fb4e2cf2f014a748c80c6d6e381d  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-blender/jars/jme3-blender-3.1.0-stable.jar
0308932f57c88fe015d9b8e045d83cc0  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-bullet/jars/jme3-bullet-3.1.0-stable.jar
72d7b2546ec3d2272bc036aa805fc5c1  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-jogg/jars/jme3-jogg-3.1.0-stable.jar
c4b53a940dd4aeb202c1a11cd2d96def  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-desktop/jars/jme3-desktop-3.1.0-stable.jar
f02d07646edbbaf85ba85232b06f9759  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-lwjgl/jars/jme3-lwjgl-3.1.0-stable.jar
83bb67dc6363447a64d47754df26964e  /home/brandon/.ivy2/cache/org.jmonkeyengine/jme3-bullet-native/jars/jme3-bullet-native-3.1.0-stable.jar

After doing a clean, trying out other versions of the Scala compiler, and switching back (and maybe other things along the way), it is now broken again with a different NoClassDefFoundError:

[error] Oct 08, 2017 6:51:18 PM com.jme3.audio.openal.ALAudioRenderer initOpenAL
[error] WARNING: Pausing audio device not supported.
[error] Oct 08, 2017 6:51:18 PM com.jme3.app.LegacyApplication handleError
[error] SEVERE: Uncaught exception thrown in Thread[jME3 Main,5,main]
[error] java.lang.NoClassDefFoundError: com/bulletphysics/collision/broadphase/OverlapFilterCallback
[error] 	at com.jme3.bullet.BulletAppState.startPhysics(BulletAppState.java:164)
[error] 	at com.jme3.bullet.BulletAppState.stateAttached(BulletAppState.java:211)
[error] 	at com.jme3.app.state.AppStateManager.attach(AppStateManager.java:133)
[error] 	at tutorial.HelloCollision.simpleInitApp(HelloCollision.scala:65)
[error] 	at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:220)
[error] 	at com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:130)
[error] 	at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:211)
[error] 	at java.lang.Thread.run(Thread.java:748)
[error] Caused by: java.lang.ClassNotFoundException: com.bulletphysics.collision.broadphase.OverlapFilterCallback
[error] 	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
[error] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[error] 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
[error] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[error] 	... 8 more
[error] 

The bad news is, this time, running the gradle project does not seem to act as a workaround.

Hey, good news, it seems this is fixed now when using the latest JMonkey version.

Here's the updated list of libs with which I was using and was finally able to run the Physics and Collision examples:

lazy val jmonkeyDeps = Seq(
  "org.jmonkeyengine" % "jme3-bullet" % "3.2.1-stable" exclude("org.jmonkeyengine", "jme3-testdata") exclude("stack-alloc", "stack-alloc") exclude("jbullet", "jbullet"),
  "org.jmonkeyengine" % "jme3-bullet-native" % "3.2.1-stable" exclude("org.jmonkeyengine", "jme3-testdata") exclude("stack-alloc", "stack-alloc") exclude("jbullet", "jbullet"),
  "org.jmonkeyengine" % "jme3-core" % "3.2.1-stable" exclude("org.jmonkeyengine", "jme3-testdata") exclude("stack-alloc", "stack-alloc") exclude("jbullet", "jbullet"),
  "org.jmonkeyengine" % "jme3-desktop" % "3.2.1-stable" exclude("org.jmonkeyengine", "jme3-testdata") exclude("stack-alloc", "stack-alloc") exclude("jbullet", "jbullet"),
  "org.jmonkeyengine" % "jme3-examples" % "3.2.1-stable" exclude("org.jmonkeyengine", "jme3-testdata") exclude("stack-alloc", "stack-alloc") exclude("jbullet", "jbullet"),
  "org.jmonkeyengine" % "jme3-lwjgl" % "3.2.1-stable" exclude("org.jmonkeyengine", "jme3-testdata") exclude("stack-alloc", "stack-alloc") exclude("jbullet", "jbullet"),
  "org.jmonkeyengine" % "jme3-terrain" % "3.2.1-stable" exclude("org.jmonkeyengine", "jme3-testdata") exclude("stack-alloc", "stack-alloc") exclude("jbullet", "jbullet"),
  "org.lwjgl.lwjgl" % "lwjgl_util" % "2.9.3"
)

Thanks for making this repo, it helped me setup JME with scala much faster than doing it from scratch. :)

Oh, not really sure btw but it may be needed to add this repo to the list (I had trouble getting JME 3.2.1 from the current repos in config): http://repo.spring.io/plugins-release

Also, some examples may need some correction due to changes in 3.2. See for example the comments here https://wiki.jmonkeyengine.org/jme3/beginner/hello_collision.html regarding >3.2

@odolha Thanks for the update, that is great to hear. I haven't been doing much with JME at the moment. I may try to get to this in a few weeks - certainly I want to keep this working. Feel free to make any pull requests you see fit and I'll test them out and merge them.