Java userNodeForPackage function fails under Matlab on OS X
1 view (last 30 days)
Show older comments
When instantiating a Java class (a simple example is copied below) that calls the function java.utils.prefs.Preferences.userNodeForPackage(), matlab reports the following error:
??? Java exception occurred: java.lang.NullPointerException at java.util.prefs.AbstractPreferences.node(AbstractPreferences.java:817) at java.util.prefs.AbstractPreferences.node(AbstractPreferences.java:800) at java.util.prefs.Preferences.userNodeForPackage(Preferences.java:358)
This appears to happen only on Mac OS X (10.5.8 or 10.6.6), but not on Windows. I am using Matlab R2010b. The error prevents me from running a large and useful application (Micro-Manager) within Matlab. Does anyone have ideas how to fix this?
Thanks!
Nico
package matlabprefstest; import java.util.prefs.Preferences;
public class PrefsInst { public PrefsInst() { Preferences pf = Preferences.userNodeForPackage(this.getClass()); } }
0 Comments
Answers (2)
Samer Abdallah
on 21 Jul 2011
I'm having this problem too. In my case, I am trying to use the JavaSound MIDI system from Matlab. I have added a MIDI service provider (here: http://www.humatic.de/htools/mmj.htm) that gives better access to MIDI devices on Mac OS X. The MMJ code is trying to access its preferences via the java.lang.prefs system. This fails with a null pointer exception:
??? Java exception occurred:
java.lang.NullPointerException
at java.util.prefs.AbstractPreferences.node(AbstractPreferences.java:817)
at java.util.prefs.AbstractPreferences.node(AbstractPreferences.java:796)
at de.humatic.mmj.MidiSystem.getActiveSensing(MidiSystem.java:538)
at de.humatic.mmj.MidiSystem.initCallback(Native Method)
at de.humatic.mmj.MidiSystem.initMidiSystem(MidiSystem.java:107)
at de.humatic.mmj.MidiSystem.getInputs(MidiSystem.java:327)
at de.humatic.mmj.spi.CoreMidiProvider.getDeviceInfo(CoreMidiProvider.java:40)
at javax.sound.midi.MidiSystem.getMidiDeviceInfo(MidiSystem.java:173)
This completely disables the entire Java MIDI subsystem. I realise this is not exactly like the above report, but it looks closely related. I am able to reproduce the OPs report using a small Java function that calls Class.forName and Preferences.userNodeForPackage. The same problems occurs whatever class I give, eg:
>> samer.util.Util.userNodeForPackage('java.lang.Object')
Looking up preferences for class class java.lang.Object
??? Java exception occurred:
java.lang.NullPointerException
at java.util.prefs.AbstractPreferences.node(AbstractPreferences.java:817)
at java.util.prefs.AbstractPreferences.node(AbstractPreferences.java:800)
at java.util.prefs.Preferences.userNodeForPackage(Preferences.java:358)
at org.samer.util.Util.userNodeForPackage(Util.java:9)
Note that the problem is not with getting the Class object to pass as a parameter to Preferences.userNodeForPackage() - this is checked in my utility function and the Class object is not null.
cheers, Samer
ps. I am using Matlab Version 7.9.0.529 (R2009b) 64-bit (maci64).
0 Comments
Richard Alcock
on 21 Jul 2011
Are your classes on the "dynamic" or "static" class path? If they are currently on the dynamic class path (for example, you used javaaddpath) what happens if you add them to the static class path?
0 Comments
See Also
Categories
Find more on Call Java from MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!