Чтобы не было скучно, я решил расчленить программу, а вернее класс HelloWorld на два класса Hello.java и Word.java, чтобы показать как можно чуть сделать короче долгий оператор вывода на печать, а во вторых, несколько позже, показать как создавать комментарии документации. И как эти комментарии могут помочь в сопровождении кода.
Ну а пока перейдем к коду. И так в студий Hello.java
В данном классе мы используем другой класс Word.java. Как видите оператор вывода на консоль стал чуть короче. Это так сказать примитивный пример библиотеки вывода на консоль.
Теперь посмотрим класс Word.java
А вот он и наш длинный оператор вывода на консоль (System.out.println()).
В данном случае оба файла Hello.java и Word.java находятся в одном каталоге. А их откомпилированные файлы с расширением .class Eclipse складывает в папочку bin.
Как видно на следующем примере, если мы запустим Hello.class на выполнение из каталога bin, то все отработает нормально.
Поскольку второй класс Word.class необходимый для работы Hello.class находится в том же каталоге. А JRE по умолчанию ищет необходимые классы в том же каталоге, что и запускаемый на выполнение класс.
Теперь переместим Hello.class в корневой каталог проекта и попробуем запустить его.
И вылетела куча ошибок. Это произошло потому, что JRE не знает где искать класс Word.
Вот мы и подошли к важному понятию classpath.
Так вот если мы укажем JRE где искать классы необходимые для работы классу Hello.class, то все сработает нормально. Для этого используем ключ –classpath.
Дадим команду java -classpath bin Hello
Как видим все заработало нормально.
Здравствуйте, у меня такой вопрос. После того как переместил файл Hello.class в корень проекта (из d:\java\HFJ\bin в d:\java\HFJ), запустил команду d:\java\HFJ>java -classpath bin Hello. Выдает -Error: Could not find or load main class Hello. По предыдущим пунктам все было нормально.
ОтветитьУдалитьjava не находит ваш Hello в текущем каталоге. Похоже что надо и текущую папке при таком запуске добавить в classpath. Т.е. вот так:
Удалитьd:\java\HFJ>java -classpath .;bin Hello
JVM жалуется что не может найти класс Hello. Может вы его забыли скопировать?
ОтветитьУдалитьПри запуске d:\Java\HFJ>java Hello выбрасывает exception NoClassDefFoundError: World. При запуске d:\Java\HFJ\bin>java World - Error: Main method not found in class World. Файлы *.class, на своих местах, но при запуске d:\Java\HFJ> java -classpath bin Hello - ошибка: не может найти или загрузить главный класс Hello.
УдалитьИ еще такой момент. При запуске D:\Java\HFJ>(или из любой другой директории, пробовал из - C:\, D:\Java\HFJ\bin)java -cp d:\Java\HFJ Hello, выбрасывает exception NoClassDefFoundError: World. Кажется, в моем случае, JVM пытается найти класс Hello в указанном classpath.
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалить