0

提前感谢您的关注。这是我第一次在这个网站上写作(相当新手:))我以前读过一个用户询问我同样问题的问题。虽然我读了很多,但我找不到解决方案。

问题:我正在尝试使用 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 .

再次提前感谢。任何帮助将不胜感激。

4

1 回答 1

1

错误在于代码中在运行时查找 jar 的位置。我打印了以“!”结尾的路径 和双斜线,所以我删除了这些字符,我终于能够使这个 API 工作。

于 2012-05-07T14:05:23.770 回答