如果我編譯一個類java編譯器創建多少個文件?
class hussi
{
public static void main(String args[])
{
System.out.println("hello java");
}
}
我會比hussi.class文件以外的任何文件?
javac是否創建除.class文件以外的任何文件?
如果我編譯一個類java編譯器創建多少個文件?
class hussi
{
public static void main(String args[])
{
System.out.println("hello java");
}
}
我會比hussi.class文件以外的任何文件?
javac是否創建除.class文件以外的任何文件?
即使是包-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
{
}
java編譯器爲每個類生成一個文件,包括內部類(匿名或不是)。他們將永遠是一個.class文件。
您將得到一個每個類的.class文件。如果你有內部類,你可能會得到每個.java文件多個.class文件。
Java編譯器只創建一個文件,即.class文件。
但是,您必須在java文件中有一個公共類才能編譯此錯誤,否則會發生錯誤,並且文件名必須與公共類名相同。
如果在java文件中有多個類,那麼會創建更多的類文件。
Java編譯器爲每個類創建.class
。 Java文件可能包含至少1個類。它可以包含更多:頂級或內部類。它也可以包含匿名內部類。編譯器爲每個這樣的類創建單獨的文件。
javac
將在此情況下創建一個.class
文件。不過,如果你有內部類與類文件外類一起,對內部類的類文件也將產生
編輯:有一個更好的答案:https://stackoverflow.com/a/1031966/298455
當您嘗試它,會發生什麼? – beny23 2012-03-21 11:33:02
'javac hussi.java',<看看ouput>,<看到1個名爲hussi.class>的類文件。 – AusCBloke 2012-03-21 11:34:56
請學習java命名約定並堅持使用它們 – kleopatra 2012-03-21 11:36:50