提前感谢您的关注。这是我第一次在这个网站上写作(相当新手:))我以前读过一个用户询问我同样问题的问题。虽然我读了很多,但我找不到解决方案。
问题:我正在尝试使用 MatlabControl jar ( http://code.google.com/p/matlabcontrol/ ) 在我的 java 代码中“调用”matlab。当我在普通的 java 应用程序中尝试这个 api 来尝试它(包括 buildpath 中的 matlabcontrol.jar)时,一切正常。
我的问题是让它在 jboss 5 AS 的 ejb 模块上工作:我可以部署 ejb 模块,我可以看到 matlabcontrol.jar 的类(我放在 server/default/lib 文件夹中),但它不工作并返回我以下异常:
Caused by: java.lang.NullPointerException
at java.io.File.<init>(File.java:251)
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)
这使我想到以下几行:
URL url = Configuration.class.getProtectionDomain().getCodeSource().getLocation();
File file = new File(url.toURI().getPath()).getCanonicalFile();
非常奇怪的是,非常非常罕见,重启jboss并重新部署ejb模块后,系统工作正常!。
真不知道是要修改这最后2行的源码(好像是没有正确获取jar代码位置的问题)还是要设置jBoss的一些配置文件来不同地设置classpath .
再次提前感谢。任何帮助将不胜感激。