2010-02-22 3 views
0

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

Exception in thread "main"
java.lang.NoClassDefFoundError:
mycompany/test Caused by:
java.lang.ClassNotFoundException:
mycompany.test at java.net.URLClassLoader$1.run(Unknown Source)

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

Java моякомп/тест -extdirs C: \ некоторый \ другой папке \ \ с \ ЛИЭС

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

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

package MyCompany; 

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

вы должны включать в себя все подпуты, в которых есть классы не только верхнего уровня, и вам нужно полностью квалифицировать имя пакета для основного класса mycompany.Test, имена классов всегда должны быть прописными. –

+0

ваше имя пакета должно быть в одном и том же случае важно указать имя каталога, которое в соответствии с вашим примером является _mycompany_ case –

+0

Я также изменил свою папку на «MyCompany». Я все еще получаю ту же ошибку :( – vikasde

ответ

1

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

java -cp <path to classes> classtorun 

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

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

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

+0

Должно быть запущено это из c: \ data или из c: \ data \ mycompany? – vikasde

+0

Я посмотрю ANT, как только я это запустил :) – vikasde

+0

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

2

Вы не должны использовать Внешние папки при вызове Java, вы должны быть установлены в значение с -cp классов

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

0

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

mkdir classes 
javac -d classes *.java 

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

Для запуска выполните следующие действия:

java -cp .;classes MyCompany.Test 

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

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