【发布时间】:2013-03-16 01:37:54
【问题描述】:
我在 MATLAB 中使用 java 包时遇到了困难
首先我将我的 .jar 添加到动态路径中:
filename = fullfile(pwd,'Compiled','SpectrometerInterface.jar');
ls(filename)
javaaddpath(filename);
ls 返回SpectrometerInterface.jar 确认文件存在,javaclasspath 确认确实已添加。
然后当我请求一个对象时,使用任一
obj = javaObject('com.jellymatter.spectrometerinterface.UDPSpectrometer');
或
obj = com.jellymatter.spectrometerinterface.UDPSpectrometer()
它说找不到类。它肯定在.jar中的正确目录中,我的类的简化版本如下
package com.jellymatter.spectrometerinterface;
public class UDPSpectrometer {
private UDPInterface inter = null;
public UDPSpectrometer(){
/* Nothing here */
}
public void connect(String addr, int p1, int p2) throws CommunicationException{
...
}
public double[] get() throws CommunicationException, SpectrometerNotCalibratedException {
...
}
}
有什么建议吗?
编辑:诊断
MATLAB 的 Java 虚拟机对于已编译的 java (JDK 1.7) 的版本 (JRE 1.5) 较低。
编辑:解决方案
我通过使用 JDK 1.5 编译解决了这个问题,但也可以在 MATLAB 中升级 JVM。
【问题讨论】:
-
作为调试提示,能否将 JAR 的完整路径设置为类路径?
-
@ShmilTheCat fullfile 函数给出完整的、绝对的路径(即'C:\stuff\morestuff\whatever\Compiled\SpectrometerInterface.jar'),是你要求的,还是我有误会了吗?
-
你应该区分 dynamic 类路径和静态类路径,请看mathworks.com/help/matlab/ref/javaclasspath.html 更改 classpath.txt 应该会吸引你
-
@ShmilTheCat 使用静态路径似乎也无法解决问题。
-
你重启了 MATLAB 吗?更改文件后?