Когда я начал изучать Java, я тоже начал с вездесущего приложения Hello world.Что более или менее похоже на:
public class MyClass {
public static void main(String args[]){
//some code here....
}
}
Прошло много лет с момента моего знакомства с Java, но недавно у меня возникла проблема с новичком: ее файл класса не запускался, хотя она моглаправильно скомпилировать.
После просмотра ее кода первое, что я заметил, было отсутствие спецификатора открытого доступа к классу с методом main.Я тут же высмеял ее, и начал «исправлять», добавив модификатор публичного доступа.Эта шутка была для меня чужой, поскольку это тоже не имело никакого значения.Затем я понял, что она пытается выполнить скомпилированный класс из каталога, отличного от того, где находится файл класса.Я перешел на этот каталог и дал команду java, и она сразу же запустилась.
Это подводит меня к моему вопросу ... В большинстве примеров "Здравствуй, мир!" Есть настройка класса с публичным доступом, когда вполне возможно, что такого вообще нет.Так какая разница, если вообще для класса, который содержит метод main?
Чтобы прояснить, что именно мы делаем, выполните следующие шаги:
У нас был класс в
c:\users\[usersname]\[my documents folder]\myprog.class
, и мы попытались запустить его изc: \ (как наш рабочий каталог).Мы указали полный относительный путь, ожидая, что он будет работать.вот так:
java users\[usersname]\[my documents folder]\myprog
Конечно, это просто не получалось, пока я не перешел в папку документов, сделав ее текущим рабочим каталогом, и снова ввел команду примерно так
java myprog
Так что в основном такой вызовимеет смысл, когда у вас есть класс в пакете, напоминающий структуру папок, добавленный к его имени.В этом случае класс отсутствует в любой упаковке.