4

我正在使用 javaaddpath 命令在我的 matlab projet(由我开发)中使用一个外部 jar(由我开发)。

我已经将我的编程环境从 Matlab r2011a 更新到 r2012b,jdk 从 1.6.0_29 更新到 1.7.0_09,windows 从 XP 更新到 7。

首先我没有重新编译我的 jar 文件,我的整个项目仍在工作(运行没有错误)。

但是现在,我正在尝试重新编译我的 jar 文件。我对此有一些问题,但它解决了(请参阅:javac @<opiton_file> 和 encoding)。但是现在我的jar工具重建了,不能用到matlab里面了……matlab显示错误:

Undefined variable "optimizer" or function "optimizer.Gui".

其中 optimizer 是一个包(即 jar 文件中的一个目录,包含 Gui 类的目录)。

总而言之,我正在使用代码(最后一行必须弹出一个 JFrame):

javaaddpath('the full path of my jar file.jar');
optimizer.Gui;

无需更新 jar 文件的编译版本,它就可以工作。使用新版本(相同源代码),matlab输出错误。

我在 jar 文件的根目录中有一个 Main 类(包含一个 main 函数)和一个清单,将这个 Main 类指定为主类。这个 Main 类进行一些测试,以确保 jar 文件中的所有功能都正常工作。所以我可以运行 java -jar my_jar_file.jar 并看到所有测试都正常(其中一个测试显示了我的优化器.Gui)。

javac版本和matlab不兼容吗?是不是因为我在文件编码方面遇到了一些问题?...

4

2 回答 2

2

好的,我已经重新安装了 JDK 1.6.0_37(最后一个可用的 1.6 版本)。我已经使用了我的构建工具(create_jar.bat),只是强制指向这个旧 jdk 的路径。它在 Matlab r2012b 下就像一个魅力!

--> Matlab r2012b 与 jdk 1.7 构建的 jar 文件不兼容。

(感谢 Matworks 不要阻止这一点)。

于 2013-01-09T13:48:04.207 回答
1

这与 MATLAB 无关。它是一个通用的 JAVA 设计限制。您不能在 JRE6 中使用为 JRE7 编译的类。

由于 MATLAB 使用 JRE6,由于 JAVA 方面的限制,您不能使用 JAVA 7 类。

于 2013-01-09T13:57:05.200 回答