Hello!
First of all… a little explanation.
I’m currently working on a project in my university. The project I’m working for make use of osgi, maven and Felix via Pax Runner.
I’ve made a litte 3D viewer with help of JMonkey. My programming enviroment is Eclipse.
For now I’ve packed the jMonkeyEngine3.jar and the lwjgl.jar in a Maven bundle and installed it.
If I right click on my Source that make use of the jMonkey Engine and say run. Everything works as expected. The application starts and
make it’s work.
…but if I want to start my Application via an Run Configuration that uses Felix via the Pax Runner I get this log in the console with an exception
on the end:
[java]23.08.2011 09:33:29 com.jme3.system.JmeSystem initialize
INFO: Running on jMonkey Engine 3 Alpha 0.6
23.08.2011 09:33:29 com.jme3.system.Natives extractNativeLibs
INFO: Extraction Directory #1: bundle://3.0:1/com/jme3/system/
23.08.2011 09:33:29 com.jme3.system.Natives extractNativeLibs
INFO: Extraction Directory #2: C:devworkspacesuAAL002rundirsmp.spaceconf
23.08.2011 09:33:29 com.jme3.system.Natives extractNativeLibs
INFO: Extraction Directory #3: C:devworkspacesuAAL002rundirsmp.spaceconf
23.08.2011 09:33:29 com.jme3.system.Natives extractNativeLib
WARNUNG: Cannot locate native library: windows/bulletjme64.dll
23.08.2011 09:33:30 com.jme3.system.lwjgl.LwjglCanvas$GLCanvas addNotify
INFO: EDT: Creating OGL thread.
23.08.2011 09:33:30 com.jme3.system.lwjgl.LwjglCanvas$GLCanvas addNotify
INFO: EDT: Notifying OGL that canvas is visible…
23.08.2011 09:33:30 com.jme3.system.lwjgl.LwjglAbstractDisplay run
INFO: Using LWJGL 2.7.1
23.08.2011 09:33:31 com.jme3.system.lwjgl.LwjglCanvas makePbufferAvailable
INFO: OGL: Pbuffer has been created
23.08.2011 09:33:31 com.jme3.renderer.lwjgl.LwjglRenderer initialize
INFO: Caps: [FrameBuffer, FrameBufferMRT, FrameBufferMultisample, TextureMultisample, OpenGL20, OpenGL21, OpenGL30, OpenGL31, OpenGL32, ARBprogram, GLSL100, GLSL110, GLSL120, GLSL130, GLSL140, GLSL150, VertexTextureFetch, TextureArray, TextureBuffer, FloatTexture, FloatColorBuffer, FloatDepthBuffer, PackedFloatTexture, SharedExponentTexture, PackedFloatColorBuffer, TextureCompressionLATC, NonPowerOfTwoTextures, MeshInstancing, VertexBufferArray]
23.08.2011 09:33:31 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Adapter: nvd3dumx,nvwgf2umx,nvwgf2umx
23.08.2011 09:33:31 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Driver Version: 8.17.12.8026
23.08.2011 09:33:31 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Vendor: NVIDIA Corporation
23.08.2011 09:33:31 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: OpenGL Version: 3.3.0
23.08.2011 09:33:31 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Renderer: GeForce GT 220/PCI/SSE2
23.08.2011 09:33:31 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: GLSL Ver: 3.30 NVIDIA via Cg compiler
23.08.2011 09:33:31 com.jme3.system.lwjgl.LwjglTimer <init>
INFO: Timer resolution: 1.000 ticks per second
23.08.2011 09:33:31 com.jme3.asset.DesktopAssetManager <init>
INFO: DesktopAssetManager created.
23.08.2011 09:33:31 com.jme3.renderer.Camera <init>
INFO: Camera created (W: 640, H: 480)
23.08.2011 09:33:31 com.jme3.renderer.Camera <init>
INFO: Camera created (W: 640, H: 480)
23.08.2011 09:33:31 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: AudioRenderer supports 64 channels
23.08.2011 09:33:31 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio effect extension version: 1.0
23.08.2011 09:33:31 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio max auxilary sends: 1
23.08.2011 09:33:31 com.jme3.app.Application handleError
SCHWERWIEGEND: Uncaught exception thrown in Thread[LWJGL Renderer Thread,6,main]
java.lang.IllegalStateException: No loader registered for type “fnt”
at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:223)
at com.jme3.asset.DesktopAssetManager.loadFont(DesktopAssetManager.java:339)
at com.jme3.app.SimpleApplication.loadFPSText(SimpleApplication.java:182)
at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:207)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:124)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:200)
at java.lang.Thread.run(Thread.java:662)[/java]
For any reason the Engine can’t locate the locator and the loader that’s “normally” can be found in “/com/jme3/asset/Desktop.cfg”
I’ve tried to create a new assetManager so I copied the Default.cfg to a known location an created a new assetManager.
But that doesn’t work.
Have anyone some suggestions for me!?
Thanks!
-René
My first suggestion is learning about the tools you want to work with. Since OSGI has a closed class loader environment its not possible to load anything but classes from outside the current plugin, even if the packages are public. So all data files have to be in the plugin they are loaded from (as for example the .cfg file or any shader or material definition etc.). This can get a bit complicated but again, learn the tools you want to use or just use the ones provided instead Since the jMonkeyEngine plugins and the plugin system work exactly like OSGI and jMP can even load and create OSGI packages and plugins it would be way easier to just use that instead.