Я пытаюсь реализовать TreeNodes и BST, и я написал два файла, чтобы запустить меня. Однако даже в этот момент я получаю действительно странную ошибку. Во время выполнения мне говорят, что метод, который явно существует, не существует.Получение странного java.lang.NoSuchMethodError для моих классов
Вот эти два класса для вашей справки.
BST.java
public class BST {
TreeNode root;
public BST(int data) {
this.root = new TreeNode(data);
}
public boolean insert(int data) {
TreeNode newNode = new TreeNode(data);
TreeNode curr = root;
boolean inTree = false;
while (!inTree) {
// newNode is <= curr, place in left
if (newNode.getValue() <= curr.getValue()) {
if (curr.getLeft() != null) {
curr = curr.getLeft();
} else {
curr.setLeft(newNode);
inTree = true;
System.out.println(data+" INSERTED LEFT OF "+curr);
}
} else {
if (curr.getRight() != null) {
curr = curr.getRight();
} else {
curr.setRight(newNode);
System.out.println(data+" INSERTED Right OF "+curr);
inTree = true;
}
}
}
return true;
}
}
Main.java
public class Main {
public static void main(String[] args) {
BST bsTree = new BST(4);
bsTree.insert(1);
bsTree.insert(4);
bsTree.insert(0);
}
}
Запуск javac Main.java
это хорошо, но когда я бегу java Main
я получаю эту ошибку:
Exception in thread "main" java.lang.NoSuchMethodError: BST.<init>(I)V
at Main.main(Main.java:5)
Может кто-то, пожалуйста, помогите мне понять, почему это происходит? Thanks
[EDIT]: Даже больше странных вещей происходит.
Скажем, я сделать совершенно новую папку в другую папку и поместить этот файл:
public class BST {
TreeNode root;
public BST(int val) {
TreeNode r = new TreeNode(val);
root = r;
}
public static void main(String[] args) {
System.out.println("hey");
}
}
Компиляция это работает, но работает это просто не дает мне никаких результатов и не прекращается. Однако, если я переименую класс на BSTe
и изменим имя файла соответственно, он будет работать ... что происходит.
Этот точный код по-прежнему дает мне ту же ошибку – Zach
@zach Скомпилировали ли вы BST? в котором находится каталог BST.class? – Jens
Все скомпилировано. Если у меня есть другой BST.java и BST.class в другом каталоге, он не должен с ним связываться ... не так ли? – Zach