2013-03-11 2 views
-1

У меня есть следующий код JAVA. Это компилируется нормально, но когда я запускаю его, я получил следующее сообщение об ошибке:Получить java.lang.NoSuchMethodError при запуске простых кодов

Исключение в потоке "основной" java.lang.NoSuchMethodError: Край (LVertex; D) V в Test.main (Test.java.: 27)

Любые подсказки? Заранее спасибо!

import java.util.ArrayList; 


class Vertex{ 
    public int key; 
    public ArrayList<Edge> edges; 
    public double minDistance = Double.POSITIVE_INFINITY; 

    public Vertex(int key) { 
     this.key = key; 
     edges = new ArrayList<Edge>(); 
    } 
} 

class Edge{ 
    public Vertex target; 
    public double weight; 

    public Edge(Vertex t, double w) { 
     target = t; 
     weight = w; 
    } 
} 

public class Test { 
    public static void main(String[] args) { 
     Edge e = new Edge(new Vertex(1), 1.0); 
    } 
} 
+0

Ваши файлы '.class' устарели. – SLaks

+0

Я пробовал это на своем NetBean, и он компилируется + работает нормально. – goravine

+0

Вы не публикуете оскорбительный код/​​класс, Dijkstra.java! –

ответ

1

Если вы удалили все файлы .class и перекомпилировать их все правильно это не представляется возможным, чтобы получить это исключение.

Исключение указывает, что один класс (в данном случае Dijkstra) пытается использовать метод (в данном случае конструктор с сигнатурой Edge(Vertex[], double)), который не существует в версии Edge, что он загружается.

Но ваш исходный код говорит, что конструктор существует. Я вижу его.

Противоречие!

Единственное возможное объяснение, о котором я могу думать, состоит в том, что вокруг вас плавают несколько копий Edge.class, а ваш путь к классу запуска указывает JVM использовать неправильный; т. е. старый, который вы НЕ перекомпилировали!


It's weird. I compile and run exactly the same file on a linux machine without the running error.

Это легко объяснить. У вас нет старых/устаревших копий файла на вашем компьютере Linux.

Смежные вопросы