Пустой файл является допустимым исходным файлом Java.Как это обрабатывается внутри JVM? - PullRequest
5 голосов
/ 17 октября 2011

Пустой файл является допустимым исходным файлом Java, но как он обрабатывается внутри JVM?

Ответы [ 3 ]

9 голосов
/ 17 октября 2011

Между файлами .java и .class-файлами нет однозначного отношения.То, что у вас есть, это взаимно-однозначное отношение между классами (или объявлениями классов ) и .class-файлами.

Исходный файл Java с нулемобъявления классов не приведут к каким-либо .class файлам , поэтому JVM вообще не обрабатывает .

$ touch Test.java

$ ls
Test.java

$ javac Test.java

$ ls
Test.java

ВСпецификация языка Java исходный файл Java является синонимом модуля компиляции .Соответствующий раздел в JLS: 7.3 Единицы компиляции .

Грамматика описывается следующим образом:

CompilationUnit:PackageDeclaration opt ImportDeclarations opt ТипDeclarations opt ...

Подпись opt говорит о том, что эта часть является необязательной.Поскольку TypeDeclarations является необязательным, объявления классов не должны существовать.

3 голосов
/ 17 октября 2011

javac создает *.class файлов для каждого из файлов .java. Так что - ни один из них, компилятор просто ничего не делает. Ничто не дает JVM.

1 голос
/ 17 октября 2011

Пустой исходный файл не создаст файлы классов, поэтому JVM ничего не сможет "обработать". И пустой файл класса (который не является чем-то, что создаст компилятор), является недопустимым, что может привести к ClassFormatError или что-то в этом роде, если это был ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...