2

我正在用 Java 开发一个库,需要在 Matlab 中使用它。Java 和 Matlab 代码都在不断开发中;因此,每当我重建 Java 代码并创建一个新的 jar 文件时,我都需要在 Matlab 代码中重新加载它并在那里使用新的 jar 文件。我的问题是 Matlab 锁定了 jar 文件,我无法用新的 jar 文件替换旧的 jar 文件,除非我重新启动整个 Matlab 环境。如何让 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

您可以使用 ClassPathHacker 动态加载 .jar 文件而不会被锁定,如https://stackoverflow.com/a/4380605/2043349中所述。

您可以从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 回答