Java MATLAB 2016使用新的番石榴版本

Java MATLAB 2016使用新的番石榴版本,java,matlab,Java,Matlab,我正在尝试导入一个自定义的脂肪罐,它依赖于guava-19.0或更高版本。我使用的matlab版本在其类路径中已经有一个番石榴罐,但它是15.0版。我已经尝试从matlab的classpath.txt文件中删除jar,但是如果这样做,matlab将无法启动。我还尝试在我的工作目录中创建一个javaclasspath.txt文件,其中包含以下行: <before> path/to/myjar.jar 路径/to/myjar.jar 但这也不能让matlab启动。 将我的jar直接

我正在尝试导入一个自定义的脂肪罐,它依赖于guava-19.0或更高版本。我使用的matlab版本在其类路径中已经有一个番石榴罐,但它是15.0版。我已经尝试从matlab的classpath.txt文件中删除jar,但是如果这样做,matlab将无法启动。我还尝试在我的工作目录中创建一个javaclasspath.txt文件,其中包含以下行:

<before>
path/to/myjar.jar

路径/to/myjar.jar
但这也不能让matlab启动。
将我的jar直接添加到classpath.txt中,使其位于静态路径而不是动态路径中,也会在启动matlab时给我一个错误。我正在使用Matlab2016。

有一种方法,但您可能不喜欢它。问题是,通过java类加载系统的设计,您不可能使用两个具有相同名称和包的类(除非您尽可能深入)。正如你所说,Matlab本身与较新的guava版本不兼容。因此,唯一的方法是使用不同的包名重新构建,也就是说,将所有包名和各自的导入更改为唯一的,例如将
com.google.*
更改为
com.google.*
,然后构建一个jar。然后,您需要修改要加载的jar的源代码,以引用新包中的类,而不是原始的guava包。这显然是假设您可以修改所需jar的源代码。

当您尝试用较新的guava版本加载Matlab时,会出现什么错误?它可能是良性的。。无论哪种方式,都不可能让Matlab使用较旧版本的guava,也不可能让您的代码使用较新版本,除非您使用不同的名称空间(这是一个巨大的难题)以及您尝试加载的jar重新构建guava本身。错误为“内部错误:桌面启动期间发生故障。详细信息:加载桌面类失败”。由于这个错误,Matlab根本无法打开。不幸的是,我认为你是正确的。我试图用一个新的包名更新源代码,但我的项目中还有其他引用guava的JAR。它们可能也需要更新。现在我只想在MATLAB中运行jar,而不是尝试导入它。