Joystick not found on OS X

My joystick refuses to be found by the inputManger.getJoysticks() method. I know this joystick worked with the jme before, and the joystick is not broken (works fine in a NES emulator).

Does someone have any ideas on what to try?

Assumptions:
The joystick was already plugged in and working before starting the app.

AppSettings has joystick support enabled.

The TestJoysticks app also isn’t working.

I had forgotten about the AppSettings setting… now I get an AssertionError instead.

The TestJoysticks test case is not working either, just exits with a “no joytsicks found dialog”.

apr 12, 2014 10:11:04 EM com.jme3.app.Application handleError
SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]
java.lang.AssertionError
	at com.jme3.input.controls.JoyAxisTrigger.joyAxisHash(JoyAxisTrigger.java:52)
	at com.jme3.input.controls.JoyAxisTrigger.triggerHashCode(JoyAxisTrigger.java:73)
	at com.jme3.input.InputManager.addMapping(InputManager.java:561)
	at com.jme3.input.DefaultJoystickAxis.assignAxis(DefaultJoystickAxis.java:75)
	at com.jme3.input.FlyByCamera.mapJoystick(FlyByCamera.java:272)
	at com.jme3.input.FlyByCamera.registerWithInput(FlyByCamera.java:245)
	at com.jme3.app.FlyCamAppState.initialize(FlyCamAppState.java:75)
	at com.jme3.app.state.AppStateManager.initializePending(AppStateManager.java:251)
	at com.jme3.app.state.AppStateManager.update(AppStateManager.java:281)
	at com.jme3.app.SimpleApplication.update(SimpleApplication.java:239)
	at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:151)
	at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:185)
	at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:228)
	at java.lang.Thread.run(Thread.java:722)


Exception: java.lang.NullPointerException thrown from the UncaughtExceptionHandler in thread "LWJGL Renderer Thread"

Hmmm… assertion:
assert joyAxis >= 0 && joyAxis <= 255;

Seems like the axis ID is outside of some expected bounds. As I don’t have Mac, you may need to make some trips through the debugger to sort this out.

Do you have the full stack trace for this exception?
Exception: java.lang.NullPointerException thrown from the UncaughtExceptionHandler in thread “LWJGL Renderer Thread”

…seems like a bug in the error handler so it’s worth fixing.

Hmm, if I remove the -ea flag on the VM run options it works like a charm. =S

I did not know flyCam had joystick mappings built in =D

I do not get more output than this form my app.

apr 12, 2014 10:20:54 EM com.jme3.system.JmeDesktopSystem initialize
INFO: Running on jMonkeyEngine 3.0.7
apr 12, 2014 10:20:54 EM com.jme3.system.Natives extractNativeLibs
INFO: Extraction Directory: /Users/kwando/projects/jme/MiniRTS
apr 12, 2014 10:20:55 EM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Lwjgl 2.9.0 context running on thread LWJGL Renderer Thread
apr 12, 2014 10:20:55 EM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Adapter: null
apr 12, 2014 10:20:55 EM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Driver Version: null
apr 12, 2014 10:20:55 EM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Vendor: Intel Inc.
apr 12, 2014 10:20:55 EM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: OpenGL Version: 2.1 INTEL-8.24.11
apr 12, 2014 10:20:55 EM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Renderer: Intel Iris OpenGL Engine
apr 12, 2014 10:20:55 EM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: GLSL Ver: 1.20
apr 12, 2014 10:20:55 EM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.blender.BlenderModelLoader
Loading: net.java.games.input.OSXEnvironmentPlugin
apr 12, 2014 10:20:56 EM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio Device: OpenAL Soft
apr 12, 2014 10:20:56 EM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio Vendor: OpenAL Community
apr 12, 2014 10:20:56 EM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio Renderer: OpenAL Soft
apr 12, 2014 10:20:56 EM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio Version: 1.1 ALSOFT 1.15.1
apr 12, 2014 10:20:56 EM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: AudioRenderer supports 64 channels
apr 12, 2014 10:20:56 EM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio effect extension version: 1.0
apr 12, 2014 10:20:56 EM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio max auxilary sends: 4
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
apr 12, 2014 10:20:57 EM com.jme3.app.Application handleError
SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]
java.lang.AssertionError
	at com.jme3.input.controls.JoyAxisTrigger.joyAxisHash(JoyAxisTrigger.java:52)
	at com.jme3.input.controls.JoyAxisTrigger.triggerHashCode(JoyAxisTrigger.java:73)
	at com.jme3.input.InputManager.addMapping(InputManager.java:561)
	at com.jme3.input.DefaultJoystickAxis.assignAxis(DefaultJoystickAxis.java:75)
	at com.jme3.input.FlyByCamera.mapJoystick(FlyByCamera.java:272)
	at com.jme3.input.FlyByCamera.registerWithInput(FlyByCamera.java:245)
	at com.jme3.app.FlyCamAppState.initialize(FlyCamAppState.java:75)
	at com.jme3.app.state.AppStateManager.initializePending(AppStateManager.java:251)
	at com.jme3.app.state.AppStateManager.update(AppStateManager.java:281)
	at com.jme3.app.SimpleApplication.update(SimpleApplication.java:239)
	at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:151)
	at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:185)
	at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:228)
	at java.lang.Thread.run(Thread.java:722)


Exception: java.lang.NullPointerException thrown from the UncaughtExceptionHandler in thread "LWJGL Renderer Thread"
AL lib: (EE) alc_cleanup: 1 device not closed
BUILD SUCCESSFUL (total time: 8 seconds)