Textmate сломал мою Java? Исключение в потоке "основной" java.lang.NoClassDefFoundError - PullRequest
0 голосов
/ 08 февраля 2010

Я однажды запустил программу на Java, используя TextMate на OS X, и больше не могу использовать Java где-либо еще. На простейшей программе я получаю:

Исключение в теме "главная" java.lang.NoClassDefFoundError: Шлюз (неправильное название: орг / МакГилл / телеком / шлюз)

Использую ли я javac -classpath . Gateway.java, java -classpath . Gateway или Eclipse или Netbeans.

Точно такая же программа все еще может запускаться в TextMate с использованием cmd-R, но больше нигде. Что случилось с моей Java?

1 Ответ

6 голосов
/ 09 февраля 2010

Я очень сомневаюсь, что текстовый редактор сделал это.

В любом случае, java -classpath . Gateway не будет работать, если этот класс находится в пакете org.mcgill.telecom (что предполагает структура папок).

Попробуйте java -classpath . org.mcgill.telecom.Gateway вместо папки, в которой можно увидеть папку org.

Вот что вы можете сделать, чтобы проверить это.

  • перейдите в папку temp и создайте эту структуру папок: org/mcgill/telecom;
  • создайте файл с именем Gateway.java в папке telecom;
  • скопируйте содержимое ниже в ваш файл Gateway.java;
  • откройте командную строку и перейдите в папку temp;
  • выполнить javac org/mcgill/telecom/Gateway.java
  • выполнить java -classpath . org.mcgill.telecom.Gateway

Вот что я получаю:

bart@hades:~$ cd Temp/
bart@hades:~/Temp$ ls
org
bart@hades:~/Temp$ javac org/mcgill/telecom/Gateway.java 
bart@hades:~/Temp$ java -classpath . org.mcgill.telecom.Gateway
Oi, it works!
bart@hades:~/Temp$ 

Здесь класс Gateway:

package org.mcgill.telecom;

public class Gateway {
  public static void main(String[] args) {
    System.out.println("Oi, it works!");
  }
}
...