我正在用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)。
答案 0 :(得分:1)
我怀疑你不能。在引擎盖下,MatLab包含一个JVM,它是锁定JAR文件的JVM。这样做可以防止在外部修改JAR文件时JVM发生令人讨厌的事情。
现在,如果这是您自己的应用程序,您可以编写一个解决此问题的自定义类加载器。但我怀疑MatLab会让你这么做。
答案 1 :(得分:0)
您可以动态加载.jar文件,而不必使用ClassPathHacker锁定,如https://stackoverflow.com/a/4380605/2043349中所述。
然后使用以下代码加载文件:
cpathPath=[hpath,'\Utilities\java\cpath.jar'];
javaaddpath(cpathPath)
import cpath.*
cpath.ClassPathHacker.addFile(jarfile)
(根据需要调整hpath和jarfile。)