【问题标题】:Use java in matlab在matlab中使用java
【发布时间】:2012-06-15 15:24:10
【问题描述】:

我在尝试使用 matlab 中的 java 时遇到了一个问题。 MathWork.com 的教程我通读了好几遍,还重新安装了 JDK1.6,以兼容 matlab。但是,经过我的工作,它仍然无法正常工作......

这是classpath.txt中的内容:

    C:\Program Files\MATLAB\R2010a\java\jarext\xstream.jar                                  
    C:\Program Files\MATLAB\R2010a\toolbox\javabuilder\jar\win64   \javabuilder.jar            

    DYNAMIC JAVA PATH

C:\Users\Gao\Desktop\connected_components_labeling

很明显,该目录包含在文件中。 connected_component_labeling 只是我磁盘上的一个文件夹。我想在 connected_components_labeling 中使用的类是:Disjoint_Set.class 和 Node.class 在 connected_components_labeling 文件夹中。

我试过了:

x =  Disjoint_Set();

还有

x = connected_components_labeling.Disjoint_Set();

它们都不起作用。我从 matlab 得到的唯一反馈是:

??? Undefined variable "connected_components_labeling" or class
"connected_components_labeling.Disjoint_Set".

我很沮丧。谁能帮帮我?我会很感激的。非常感谢!

【问题讨论】:

  • “connected_components_labeling”是一个包吗? jar文件中的类吗?还是它们只是位于该目录中的 .class 文件?这些类可能已经在一个包中,然后从包中删除了吗?
  • 我刚刚编辑了它。 connected_components_labeling 是一个包。这些类不在 jar 文件中。它们只是 .class 文件。很抱歉造成混淆。
  • 如果 connected_components_labeling 实际上是一个包,它不应该列在路径上。它所在的目录应该在路径上。所以Desktop目录在这里。可能不是一个适合它的好地方。
  • @Gao:您应该使用javaaddpath 将条目添加到Java 类路径
  • @Amro:我试过 javaaddpath()。此功能会将文件添加到动态路径。而且它也不起作用。

标签: java matlab classpath


【解决方案1】:

确保您使用 MATLAB 兼容的 JRE/JDK 编译 java 文件。据我所知,MATLAB 不能在 Java 7 上正常工作,所以暂时坚持使用 Java 6...

有几个环境变量会影响 MATLAB。就我而言,我有:

JAVA_HOME = C:\Program Files\Java\jdk1.6.0_32
MATLAB_JAVA = C:\Program Files\Java\jre6
PATH = ...;C:\Program Files\Java\jdk1.6.0_32\bin

这是我刚刚做的一个简单测试:

C:\work\Student.java

public class Student {
    private String name;
    public Student(String str) {
        name = str;
    }
    public void setName(String str) {
        name = str;
    }
    public String getName() {
        return name;
    }

    public static void main(String args[]) {
        Student s = new Student("amro");
        s.setName("unknown");
        System.out.println("Hello " + s.getName());
    }
}

我编译:javac Student.java(输出放在同一目录c:\work\Student.class)。现在我通过 MATLAB 对其进行测试:

javaaddpath('C:\work')

javaMethod('main','Student','')

s = Student('me')
char( s.getName() )

我明白了:

Hello unknown

s =
Student@8d6877

ans =
me

【讨论】:

  • +1 用于检查您的 JDK 版本是否与您的 MATLAB 版本兼容。解决了我的问题。谢谢!这是list of supported JDK versions for each MATLAB version(点击“支持的编译器”链接)。
  • @FlorianBrucker:据我了解有workarounds.. 但是您不必再担心了,您会很高兴知道 MATLAB R2013b 终于升级到 Java 7。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 2017-01-10
  • 1970-01-01
相关资源
最近更新 更多