为什么我不能在MATLAB中运行这个java foo.class文件

时间:2013-08-06 09:34:53

标签: java matlab runtime-error

我编译了以下java文件,并将文件路径添加到类路径中。但在调用该类后,它显示出一些错误。因为我是Java的新手,请帮助我。

MyQueue2.java

import java.util.PriorityQueue;
import java.util.*;

public class MyQueue2 {
  Comparator<Double> c;
  PriorityQueue<Double> PQ;

  public MyQueue2() {
    c = new Comparator<Double>(){
            public int compare(Double o1, Double o2){
              if(o2 > o1) {
                return -1;
              } else if(o1 > o2) {
                return 1;
              } else {
                return 0;
              }
            }
        };
    PQ = new PriorityQueue<Double>(1000,c);
  }

  public void addElement(double d) {
    PQ.add(d);
  }

  public double removeElement() {
    return(PQ.remove());
  }
}

我在MATLAB中的命令:

import java.util.PriorityQueue;
import java.util.*;
import MyQueue2;
methods('MyQueue2') %

Methods for class MyQueue2:

MyQueue2       equals         hashCode       notifyAll      toString       
addElement     getClass       notify         removeElement  wait    

a = MyQueue2

Java exception occurred:
java.lang.NoClassDefFoundError: MyQueue2$1

    at MyQueue2.<init>(MyQueue2.java:9)

Caused by: java.lang.ClassNotFoundException: MyQueue2$1

    at java.net.URLClassLoader$1.run(Unknown Source)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.net.URLClassLoader.findClass(Unknown Source)

    at com.mathworks.jmi.CustomURLClassLoader.findClass(ClassLoaderManager.java:760)

    at java.lang.ClassLoader.loadClass(Unknown Source)

    at java.lang.ClassLoader.loadClass(Unknown Source)

    at java.lang.ClassLoader.loadClassInternal(Unknown Source)

    ... 1 more

b = MyQueue2    % again

Java exception occurred:
java.lang.NoClassDefFoundError: MyQueue2$1

    at MyQueue2.<init>(MyQueue2.java:9)

请帮我解决问题。

1 个答案:

答案 0 :(得分:1)

在编译MyQueue2.java之后,你应该得到2个类文件MyQueue2.class和MyQueue2 $ 1.class - 这是为Comparator生成的匿名类,你把它们全部放在类路径中吗?我猜你忘了这个。