0

ご清聴ありがとうございました。私がこのサイトに書いているのは初めてです(かなり初心者です:))私は以前に同じ問題を尋ねているユーザーの質問を読みました。私はたくさん読んだのですが、解決策を見つけることができませんでした。

問題:MatlabControl jar(http://code.google.com/p/matlabcontrol/)を使用して、Javaコード内でmatlabを「呼び出す」ことを試みています。通常のJavaアプリケーション(ビルドパスのmatlabcontrol.jarを含む)内でこのAPIを試してみると、すべてが完全に機能します。

私の問題は、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のいくつかの設定ファイルを設定する必要があるのか​​本当にわかりません。

よろしくお願いします。どんな助けでも大歓迎です。

4

1 に答える 1

1

間違いは、実行時にjarの場所を見つけるコードにありました。「!」で終わるパスを印刷しました とダブルスラッシュなので、これらの文字を削除して、ようやくこのAPIを機能させることができました。

于 2012-05-07T14:05:23.770 に答える