1

我已经编译了以下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)

请帮我解决问题。

4

1 回答 1

1

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

于 2013-08-06T09:43:50.680 回答