MatlabJavaAddPath不再工作(使用JDK1.7构建jar)

MatlabJavaAddPath不再工作(使用JDK1.7构建jar),java,matlab,jar,Java,Matlab,Jar,我使用javaaddpath命令将一个外部jar(由我开发)用于我的matlab projet(由我开发) 我已经将编程环境从MatlabR2011A更新为r2012b,jdk从1.6.0_29更新为1.7.0_09,windows从XP更新为7 首先,我没有重新编译我的jar文件,我的整个项目仍在运行(运行时没有bug) 但是现在,我正在尝试重新编译我的jar文件。我有一些问题,但它解决了(见:)。但是现在我的jar工具被重建了,我不能在matlab中使用它。。。Matlab显示错误: Und

我使用javaaddpath命令将一个外部jar(由我开发)用于我的matlab projet(由我开发)

我已经将编程环境从MatlabR2011A更新为r2012b,jdk从1.6.0_29更新为1.7.0_09,windows从XP更新为7

首先,我没有重新编译我的jar文件,我的整个项目仍在运行(运行时没有bug)

但是现在,我正在尝试重新编译我的jar文件。我有一些问题,但它解决了(见:)。但是现在我的jar工具被重建了,我不能在matlab中使用它。。。Matlab显示错误:

Undefined variable "optimizer" or function "optimizer.Gui".
其中optimizer是一个包(即jar文件中的目录,包含Gui类的目录)

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

如果不更新jar文件的编译版本,它就可以正常工作。与新版本(相同的源代码),matlab输出的错误

我在jar文件的根目录下有一个Main类(包含一个Main函数)和一个manitifest,它将这个Main类指定为Main类。这个主类进行了一些测试,以确保jar文件中的所有功能都正常工作。因此,我可以运行java-jar my_jar_file.jar并查看所有测试是否正常(其中一个测试显示my optimizer.Gui)


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

好的,我重新安装了JDK 1.6.0_37(最新可用的1.6版本)。 我使用了我的构建工具(create_jar.bat),只需强制使用这个旧jdk的路径。 在MatlabR2012B下,它就像一个魔咒一样工作

-->MatlabR2012B与使用JDK1.7构建的jar文件不兼容


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

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


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

Ok,但MATLAB文档(javaaddpath)中没有说明我们必须使用jdk 1.6来编译jar。他们可以写一份免责声明。。。此外,javaaddpath正在工作,因为jar文件列在javaclasspath的动态部分。他们可以在加载jar文件时向jar文件的java版本添加一个检查。这是一个商业产品,非常昂贵!它们提供了一个有文档记录的/受支持的函数来加载和使用外部jar,所以即使这个bug是Java固有的,它也与Matlab有关!;)您可以使用
setenv()
动态地将JAVA_HOME变量设置为
JAVA
的正确版本(假设已安装)。例如:
setenv('JAVA_HOME','C:\Progra~1\JAVA\jdk1.7.0_11')
For
Matlab
r2014b。
javaaddpath('the full path of my jar file.jar');
optimizer.Gui;