2012-03-21 60 views
0

如果我編譯一個類java編譯器創建多少個文件?

class hussi 
{ 
    public static void main(String args[]) 
    { 
    System.out.println("hello java"); 
    } 
} 

我會比hussi.class文件以外的任何文件?
javac是否創建除.class文件以外的任何文件?

+2

當您嘗試它,會發生什麼? – beny23 2012-03-21 11:33:02

+1

'javac hussi.java',<看看ouput>,<看到1個名爲hussi.class>的類文件。 – AusCBloke 2012-03-21 11:34:56

+0

請學習java命名約定並堅持使用它們 – kleopatra 2012-03-21 11:36:50

回答

1

即使是包-info.java生成一個類。

/** 
* Javadoc for a package 
* 
* with an annotation. 
*/ 
@Deprecated 
package mypackage; 

編譯

$ javac package-info.java 
$ ls -l 
total 8 
-rw-rw-r-- 1 peter peter 180 2012-03-21 12:08 package-info.class 
-rw-rw-r-- 1 peter peter 87 2012-03-21 12:08 package-info.java 

$ javap -c -v -classpath .. mypackage.package-info 
Classfile /d/peter/untitled/src/main/java/mypackage/package-info.class 
    Last modified 21-Mar-2012; size 180 bytes 
    MD5 checksum f152dc2e8a45929ef297f6ac05a4067e 
    Compiled from "package-info.java" 
interface mypackage.package-info 
    SourceFile: "package-info.java" 
    RuntimeVisibleAnnotations: 
    0: #6() 
    minor version: 0 
    major version: 51 
    flags: ACC_INTERFACE, ACC_ABSTRACT, ACC_SYNTHETIC 
Constant pool: 
    #1 = Class    #7    // "mypackage/package-info" 
    #2 = Class    #8    // java/lang/Object 
    #3 = Utf8    SourceFile 
    #4 = Utf8    package-info.java 
    #5 = Utf8    RuntimeVisibleAnnotations 
    #6 = Utf8    Ljava/lang/Deprecated; 
    #7 = Utf8    mypackage/package-info 
    #8 = Utf8    java/lang/Object 
{ 
} 
1

java編譯器爲每個類生成一個文件,包括內部類(匿名或不是)。他們將永遠是一個.class文件。

1

您將得到一個每個類的.class文件。如果你有內部類,你可能會得到每個.java文件多個.class文件。

1

Java編譯器只創建一個文件,即.class文件。

但是,您必須在java文件中有一個公共類才能編譯此錯誤,否則會發生錯誤,並且文件名必須與公共類名相同。

如果在java文件中有多個類,那麼會創建更多的類文件。

5

Java編譯器爲每個類創建.class。 Java文件可能包含至少1個類。它可以包含更多:頂級或內部類。它也可以包含匿名內部類。編譯器爲每個這樣的類創建單獨的文件。