空文件是有效的Java源文件。如何在JVM中处理它?

时间:2011-10-17 08:59:56

标签: java jvm

空文件是有效的Java源文件,但它是如何在JVM中处理的?

3 个答案:

答案 0 :(得分:9)

.java文件和.class文件之间没有一对一的关系。你拥有的是(或类声明)和.class文件之间的一对一关系。

零类声明的Java源文件不会产生任何.class个文件,因此JVM根本不会处理

$ touch Test.java

$ ls
Test.java

$ javac Test.java

$ ls
Test.java

在Java语言规范中,Java源文件与编译单元同义。 JLS中的相关部分是7.3 Compilation Units

语法描述如下:

  

CompilationUnit:
  PackageDeclaration opt ImportDeclarations opt TypeDeclarations opt
  ...

opt -subscript表示该部分是可选的。由于TypeDeclarations是可选的,因此不需要存在类声明。

答案 1 :(得分:3)

javac为*.class文件中的每个文件生成.java个文件。所以 - 没有一个,编译器什么都不做。什么都没有给jvm。

答案 2 :(得分:1)

空的源文件不会创建任何类文件,因此JVM无需“处理”。并且一个空的类文件(编译器不会创建它)是无效的,可能导致ClassFormatError或类似的东西,如果这是你的问题。