我正在尝试使用Netbeans应用程序中的MatlabCotrol(http://code.google.com/p/matlabcontrol/)。
为了从Java应用程序(例如没有Netbeans模块)使用Matlabcontrol,唯一需要的是将matlabcontrol-4.0.jar文件添加到项目中,一切正常。
当我尝试从Netbeans应用程序执行相同操作时,我使用"库包装器模块"来包含jar文件,原则上应该允许将jar文件用作Netbeans模块。但是,Matlabcontrol并不喜欢这种方式。项目编译正确,表明包装器模块确实暴露了matlabcontrol jar文件中的类定义。但是,程序运行时出现以下异常:
java.lang.NullPointerException
at java.io.File.<init>(File.java:222)
at matlabcontrol.Configuration.getSupportCodeLocation(Configuration.java:227)
at matlabcontrol.RemoteMatlabProxyFactory.createProcess(RemoteMatlabProxyFactory.java:278)
at matlabcontrol.RemoteMatlabProxyFactory.requestProxy(RemoteMatlabProxyFactory.java:116)
at matlabcontrol.RemoteMatlabProxyFactory.getProxy(RemoteMatlabProxyFactory.java:134)
at matlabcontrol.MatlabProxyFactory.getProxy(MatlabProxyFactory.java:81)
问题似乎是jar文件中的matlabcontrol代码,需要知道代码的位置。在Java应用程序的情况下,jar文件位于Matlabcontrol似乎期望的特定目录中。在netbeans内部,情况并非如此。错误发生在这些代码行中:
URL url = Configuration.class.getProtectionDomain().getCodeSource().getLocation();
File file = new File(url.toURI().getPath()).getCanonicalFile();
异常由File构造函数触发,因为Configuration类函数返回null url。
有没有人知道如何解决这个问题?
无论如何,感谢您阅读我的问题!