【问题标题】:Matlab locks the jar file when I try to call Java methods from it当我尝试从中调用 Java 方法时,Matlab 会锁定 jar 文件
【发布时间】:2012-07-18 10:45:45
【问题描述】:

我正在用 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)。

【问题讨论】:

    标签: java matlab


    【解决方案1】:

    我怀疑你不能。在底层 MatLab 包含一个 JVM,它是锁定 JAR 文件的 JVM。这样做是为了防止 JVM 在外部修改其脚下的 JAR 文件时发生令人讨厌的事情。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-25
        • 2020-03-26
        • 2020-11-11
        • 2013-10-25
        相关资源
        最近更新 更多