Как мне скомпилировать исходные файлы Java? - PullRequest
0 голосов
/ 22 февраля 2010

Мои исходные файлы находятся в этой папке: c: \ data \ mycompany. Все мои исходные файлы содержат следующую строку: package mycompany; Теперь из папки c: \ data я скомпилировал все, используя эту команду: javac mycompany / *. Java -extdirs c: \ some \ other \ folder \ with \ libs. Это хорошо компилируется. Теперь, когда я пытаюсь выполнить его (снова из c: \ data) с помощью этой команды: java mycompany / test, тогда я получаю эту ошибку:

Исключение в теме "main"
java.lang.NoClassDefFoundError:
mycompany / test Причина:
java.lang.ClassNotFoundException:
mycompany.test at java.net.URLClassLoader $ 1.run (неизвестный источник)

Я также попробовал приведенную ниже команду, но она воспроизводит ту же ошибку:

java mycompany / test -extdirs c: \ some \ other \ folder \ with \ libs

Это правильный способ компиляции / запуска?

Вот мой исходный код:

package MyCompany;

public class Test
{
  public static void main(String[] args) 
  {
    System.out.println("test");
  } 
}

Ответы [ 4 ]

2 голосов
/ 22 февраля 2010

Вам необходимо установить classpath . См. Например этот вопрос .

2 голосов
/ 22 февраля 2010

Вы не должны использовать extdirs при вызове Java, вы должны установить ваш classpath с помощью -cp

Кстати, при вызове основного java-класса вы должны указать имя класса, а не путь к классу, следовательно, скорее всего это mycompany.test (если ваш класс, содержащий main, называется test), а не mycompany / тестовое задание. Это не ошибка, так как Java исправит это для вас.

1 голос
/ 22 февраля 2010

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

java -cp <path to classes> classtorun

так что ваш пример может выглядеть как

java -cp <path to classes>;<path to libs> mycompany.Test

вам действительно нужно взглянуть на ANT , чтобы автоматизировать компиляцию и собрать в исполняемый файл .jar . Никто не делает эту сложную работу вручную из-за повторяющейся типизации и вероятности ошибок. ANT был создан, чтобы избежать всех этих мелочей и позволить вам сконцентрироваться на решении проблем кодирования и не бороться с инструментами командной строки. Прочитайте это .

0 голосов
/ 23 февраля 2010

Попробуйте это скомпилировать:

mkdir classes
javac -d classes *.java

Создавать каталог / classes только в первый раз. Каталог -d указывает javac поместить ваш файл .class в /classes.

Чтобы запустить, сделайте это:

java -cp .;classes MyCompany.Test

Это должно работать нормально.

...