Компиляция Javac и выполнение 2 файлов Java - PullRequest
2 голосов
/ 14 ноября 2011

Программа написана с 2 файлами filter.java, в которой находится основная функция, и ClasifiedWord.java, которая является только контейнерным классом.Я написал, что в Windows на Eclipse, но хочу скомпилировать его на Linux JAVAC компилятор.

javac filter.java ClasifiedWord.java

работает без ошибок, но при попытке запустить программу:

snowy:Filter$ java filter 
Exception in thread "main" java.lang.NoClassDefFoundError: filter
Caused by: java.lang.ClassNotFoundException: filter
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: filter.  Program will exit.
snowy:Filter$ javac filter.java ClasifiedWord.java
snowy:Filter$ java filter ClasifiedWord
Exception in thread "main" java.lang.NoClassDefFoundError: filter
Caused by: java.lang.ClassNotFoundException: filter
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: filter.  Program will exit.

Как можноЯ запускаю программу?Кажется, что компиляция в порядке.У меня есть сомнения, что, возможно, я ошибся в путях к файлам в программе .... но я думаю, что это не так?Спасибо за ваши ответы!

Ответы [ 3 ]

2 голосов
/ 14 ноября 2011

Введите следующую команду.

java -classpath . filter

Если вы хотите набрать просто java filter, пожалуйста, следуйте этим инструкциям.

P.S. Последняя команда java filter ClasifiedWord означает запуск программы filter и использование string ClasifiedWord в качестве аргумента.

1 голос
/ 14 ноября 2011

Похоже, что у вас либо неверный параметр CLASSPATH (обычно он вам вообще не нужен, но если он у вас есть, он должен включать . в списке для текущего каталога), либо вы используетепакеты (ошибочно) или оба.Для решения проблемы classpath см. Другие ответы.

Если вы используете пакеты, т.е. ваши файлы содержат строку package ...; в начале, вы должны поместить ваши исходные файлы в структуру каталогов в соответствии со структурой пакета,Например, если у вас есть package example;, у вас должен быть каталог example в вашем текущем каталоге, и в этом два исходных файла.

Затем вызовите компилятор и интерпретатор следующим образом:

javac example/filter.java example/ClasifiedWord.java
java example.filter

(Предполагается, что filter является основным классом, в противном случае замените его имя.)

1 голос
/ 14 ноября 2011

Роланд прав в комментарии, вы можете запустить его с java -classpath <folderContainingDotClassFiles> filter. Кроме того, вы должны изменить filter.java на Filter.java, так как стандартное соглашение Java для имен классов (включая файлы, содержащие их) состоит в том, чтобы использовать заглавные буквы первой буквы.

...