Запуск java файла после компиляции

177
30 апреля 2019, 13:50

Почему после в консоли после компиляции java файла. 1)Командой javac Helloworld.java происходит компиляция все хорошо. Появился файл с расширением .class (байт код) 2) Хочу запустить программу по логике вещей нужно запускать java Helloworld.class, но у меня требует именно java Helloworld Почему именно так? и при запуске данной команды, какие файлы он подхватывает?

Answer 1

Потому что программа java ожидает получить в качестве своего параметра название класса, а не файла, в котором байткод этого класса находится. Если вы используете Java 11, вы можете запускать свою программу сразу java Helloworld.java, то есть без предварительной компиляции в class файл. При этом Helloworld.class, в той же директории, не должно быть, иначе не запустится.

Answer 2

Ответ на вторую часть вопроса -- "какие файлы он подхватывает" (не очень ясно, правда, что такое "подхватывает"). Виртуальная машина (java.exe) ищет класс, имя которого передано в параметре, в текущей директории и в директориях, перечисленных в параметре командной строки -jar, в системной переменной CLASSPATH, и/или в директориях, перечисленных в параметре -cp (-classpath). Напр.

  java -cp ./bin com.my.package.MyClass    
  java -jar myJar.jar 

При этом подразумевается, что в директории /bin есть поддиректория com/my/package, в которой лежит откомпилированный файл MyClass.class, а в файле myJar.jar есть поддиректория с именем META-INF, в которой лежит файл, называемый MANIFEST.FM, в котром есть строка вида

Main-Class: com.my.package.MyClass

(это указание виртуальной машине, какой класс из архива надо запускать) а в директории com/my/package лежит сам класс, MyClass.class, содержащий точку входа (public static void main(String[] args) { ... }). Подробней см. https://docs.oracle.com/javase/8/docs/technotes/tools/findingclasses.html (там, правда, не очень внятно объясняется)

READ ALSO
Чем отличается newFixedThreadPool от newSingleThreadExecutor

Чем отличается newFixedThreadPool от newSingleThreadExecutor

Разбираю конкурентность и заметил такие вариации Executor-а Для однопоточности

173
Как сравнить два аудио файла

Как сравнить два аудио файла

Я много искал как сравнить два аудио файла, но нигде не нашел пример такой задачи

173
Как остановить горизонтальный скрол?

Как остановить горизонтальный скрол?

Как остановить горизонтальный скролл, а затем скролить по горизонтали в обратном направлении

157
Динамическая подгрузка данных

Динамическая подгрузка данных

Ниже скрипт для подгрузки данных в таблицу на странице из БД, но в консоли ошибка, и я не понимаю в чем делоВот скрипт:

220