提前感谢您的关注。 这是我第一次在这个网站上写作(相当新手:)) 我之前读过用户问我同样问题的问题。虽然我读了很多,但我找不到解决方案。
问题: 我正在尝试使用MatlabControl jar(http://code.google.com/p/matlabcontrol/)在我的java代码中“调用”matlab。 当我在普通的java应用程序中尝试这个api来尝试它(包括构建路径中的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的一些配置文件来设置类路径不同。
提前再次感谢。 任何帮助都会非常感激。
答案 0 :(得分:1)
错误在于代码在运行时找到jar的位置。 我打印了以“!”结尾的路径和双斜线,所以我删除了这些字符,我终于能够使这个API工作。