Запуск Java-класса из терминала - PullRequest
3 голосов
/ 11 февраля 2012

Этот вопрос задавался ранее, но я все еще не могу понять, что не так по какой-то причине. Я получил класс с именем NewClass в синтаксисе пакета в файле src. Из пути src я набираю:

javac src / syntaxtest / NewClass.java

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

ClassDefNotFound или ClassDefNotFound (неправильное имя: syntaxtest / NewClass)

Ответы [ 3 ]

7 голосов
/ 11 февраля 2012

Попробуйте "java -cp src syntaxtest.NewClass".

То есть, если у вас есть папка "src", которая содержит подпапку (package) "syntaxtest", а класс "NewClass" находится в "package syntaxtest", то вышеуказанная команда будет работать.

$ ls src/syntaxtest
NewClass.java
$ cat src/syntaxtest/NewClass.java
package syntaxtest;
public class NewClass {
  public static void main(String args[]) {
    System.out.println("Hello, World!");
  }
}
$ javac src/syntaxtest/NewClass.java
$ java -cp src syntaxtest.NewClass
Hello, World!
1 голос
/ 11 февраля 2012

Я сделал следующий тест:

  • Создан Java-файл в home / test / blah / TestClass.java

    пакет бла;

    открытый класс TestClass { public static void main (String [] args) { System.out.println («Привет, мир!»); } }

  • Пошел в каталог home / test /

  • Скомпилировал файл, набрав:
javac blah/TestClass.java
  • Файл скомпилирован нормально.
  • Запустите его, набрав:
java blah.TestClass
  • Получил сообщение "Hello World!" как и ожидалось: программа работает нормально.
  • Пошел в каталог home /
  • Попытался запустить, набрав:

java test / blah.TestClass

  • ... и многие другие комбинации слешей и точек ..... ничего не получалось .... продолжайте получать то же исключение, что и вы:
java.lang.NoClassDefFoundError

Так что мне кажется, что для запуска класса Java с помощью команды 'java' вы действительно должны находиться в корневой папке приложения.

0 голосов
/ 26 декабря 2013

У меня была похожая проблема. Я хотел организовать свой проект, используя папки src и bin прямо из поиска Mac и использовать Emacs или какой-либо другой текстовый редактор. Мне просто не понравилось затмение.

Вы не можете выполнять классы из другой папки, но вы можете сделать компиляцию из другой папки в ту, которую вы собираетесь выполнить.

Например (при условии, что пакета нет), перейдите в папку bin и запустите:

$ javac ../src/name.java -d ../bin/

(компилируется из папки src и выводит файл .class непосредственно в bin)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...