Почему вы удаляете .class при выполнении на JVM?

Пример: у меня есть исходный код, FooBar.java

javac FooBar.java

это дает мне FooBar.class.

Почему API командной строки JVM принимает FooBar вместо FooBar.class (работает в UNIX FYI)?


person Community    schedule 25.11.2013    source источник
comment
дублировать, stackoverflow.com/questions/8651140/ stackoverflow.com/questions/8755746/   -  person Ahmet Karakaya    schedule 26.11.2013


Ответы (2)


Это просто условность! Классы загружаются с использованием полного имени класса. Затем ClassLoader знает, как сопоставлять имена классов с именами файлов (например, добавляя «.class»).

person isnot2bad    schedule 25.11.2013

Просто потому, что вам нужно сообщить JVM имя класса, который вы хотите запустить, а не его фактическое имя файла. Другой пример: если бы ваш класс был myPackage/FooBar.java, вы бы скомпилировали его в myPackage/FooBar.class, хотя вы бы указали myPackage.FooBar в качестве аргумента jvm.

person Michael Zilbermann    schedule 25.11.2013