2

Java でライブラリを開発しており、Matlab で使用する必要があります。Java と Matlab のコードはどちらも継続的に開発されています。したがって、Java コードを再構築して新しい jar ファイルを作成するたびに、Matlab コードで再読み込みし、そこで新しい jar ファイルを使用する必要があります。私の問題は、Matlab が jar ファイルをロックし、Matlab 環境全体を再起動しない限り、古い jar ファイルを新しいものに置き換えることができないことです。Matlab で jar ファイルのロックを解除するにはどうすればよいですか?

Java クラスとメソッドにアクセスします。

javaaddpath('path/to/jar/file.jar');

また、最後に次のように呼び出します。

javarmpath('path/to/jar/file.jar');

ただし、ファイルのロックも解除されません。Matlab 7.9.0 (R2009b) を使用しています。

4

2 に答える 2

1

できないと思います。MatLab の内部には JVM が含まれており、JAR ファイルをロックしているのは JVM です。外部の何かがその足元で JAR ファイルを変更したときに、JVM に厄介なことが起こるのを防ぐために行われます。

これが独自のアプリケーションである場合は、この問題を回避するカスタム クラスローダーを作成できます。しかし、MatLab でそれができるとは思えません。

于 2012-07-18T10:55:06.750 に答える
0

https://stackoverflow.com/a/4380605/2043349で説明されているように、ClassPathHacker を使用してロックされることなく、.jar ファイルを動的にロードできます。

https://code.google.com/p/ratrix/source/browse/classes/db/cpath/ClassPathHacker.java?r=8ee84cd195104df02b5e8530190590aff465d914から jar パッケージをダウンロードでき ます。

次に、次のコードを使用してファイルをロードします。

cpathPath=[hpath,'\Utilities\java\cpath.jar'];
javaaddpath(cpathPath)
import cpath.*
cpath.ClassPathHacker.addFile(jarfile)

(必要に応じて hpath と jarfile を調整します。)

于 2014-01-31T20:17:15.490 に答える