繁体   English   中英

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

[英]Matlab locks the jar file when I try to call Java methods from it

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

我通过访问Java类和方法

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

最后我打电话给:

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

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

我怀疑你不能。 MatLab的内部包含一个JVM,并且JVM锁定了JAR文件。 这样做是为了防止当外面的某物在其脚下修改JAR文件时,JVM发生讨厌的事情。

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

您可以动态加载.jar文件,而无需使用https://stackoverflow.com/a/4380605/2043349中所述的 ClassPathHacker进行锁定。

您可以从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。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM