Пример: у меня есть исходный код, FooBar.java
javac FooBar.java
это дает мне FooBar.class
.
Почему API командной строки JVM принимает FooBar
вместо FooBar.class
(работает в UNIX FYI)?
Пример: у меня есть исходный код, FooBar.java
javac FooBar.java
это дает мне FooBar.class
.
Почему API командной строки JVM принимает FooBar
вместо FooBar.class
(работает в UNIX FYI)?
Это просто условность! Классы загружаются с использованием полного имени класса. Затем ClassLoader
знает, как сопоставлять имена классов с именами файлов (например, добавляя «.class»).
Просто потому, что вам нужно сообщить JVM имя класса, который вы хотите запустить, а не его фактическое имя файла. Другой пример: если бы ваш класс был myPackage/FooBar.java, вы бы скомпилировали его в myPackage/FooBar.class, хотя вы бы указали myPackage.FooBar в качестве аргумента jvm.