当我尝试从中调用Java方法时,Matlab会锁定jar文件

时间:2012-07-18 10:45:45

标签: java matlab

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

我通过

访问Java类和方法
javaaddpath('path/to/jar/file.jar');

最后我打电话给:

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

但它也没有解锁文件。我使用Matlab 7.9.0(R2009b)。

2 个答案:

答案 0 :(得分:1)

我怀疑你不能。在引擎盖下,MatLab包含一个JVM,它是锁定JAR文件的JVM。这样做可以防止在外部修改JAR文件时JVM发生令人讨厌的事情。

现在,如果这是您自己的应用程序,您可以编写一个解决此问题的自定义类加载器。但我怀疑MatLab会让你这么做。

答案 1 :(得分:0)

您可以动态加载.jar文件,而不必使用ClassPathHacker锁定,如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。)