2

java.lang.Object、java.lang.String などのクラス (Oracle が提供する rt.jar 内) が .java ソース ファイルからどのように生成されたかを知りたいだけです。彼らのjavacがそれらをコンパイルすることは不可能だと思います。

"class Dummy{}" を含む Dummy.java をコンパイルしようとしました

lab@labb:~/Documents$ set PATH=.:$JAVA_HOME/bin

lab@labb:~/Documents$ set CLASSPATH=.

lab@labb:~/Documents$ javac -verbose Dummy.java

[解析開始RegularFileObject[Dummy.java]]

[解析完了 12ms]

[ソース ファイルの検索パス: .]

[クラスファイルの検索パス: /usr/lib/jvm/java-7-oracle/jre/lib/resources.jar,/usr/lib/jvm/java-7-oracle/jre/lib/rt.jar,/ usr/lib/jvm/java-7-oracle/jre/lib/sunrsasign.jar,/usr/lib/jvm/java-7-oracle/jre/lib/jsse.jar,/usr/lib/jvm/java- 7-oracle/jre/lib/jce.jar、/usr/lib/jvm/java-7-oracle/jre/lib/charsets.jar、/usr/lib/jvm/java-7-oracle/jre/classes、 /usr/lib/jvm/java-7-oracle/jre/lib/ext/sunpkcs11.jar、/usr/lib/jvm/java-7-oracle/jre/lib/ext/dnsns.jar、/usr/lib /jvm/java-7-oracle/jre/lib/ext/zipfs.jar、/usr/lib/jvm/java-7-oracle/jre/lib/ext/localedata.jar、/usr/lib/jvm/java -7-oracle/jre/lib/ext/sunec.jar,/usr/lib/jvm/java-7-oracle/jre/lib/ext/sunjce_provider.jar,.]

[ロード中 ZipFileIndexFileObject[/usr/lib/jvm/java-7-oracle/lib/ct.sym(META-INF/sym/rt.jar/java/lang/ Object .class)]]

【ダミーチェック】

[ロード中 ZipFileIndexFileObject[/usr/lib/jvm/java-7-oracle/lib/ct.sym(META-INF/sym/rt.jar/java/lang/ Au​​toCloseable.class )]]

[RegularFileObject[Dummy.class] を書きました] [合計 131ms]

4

2 に答える 2

2

すべてのクラスは Java コードとして表現でき ( http://www.docjar.com/docs/api/java/lang/package-index.htmlで確認できます)、javac でコンパイルできます。ObjectVM によってロードされたときにスーパークラスを取得しないという点で、これは特殊なケースです。

于 2012-09-27T13:44:34.107 に答える
0

逆コンパイラ (例ではJAD ) を使用して、.class のソース ファイルがどのように見えるかを確認できます。

基本クラスの場合、必要なメソッドがいくつかあり、その実装は、 Windows やLinuxnativeなどのシステム依存ライブラリで提供されます。dllso

String には、native (intern) メソッドが 1 つだけあります。オブジェクトには他にもあります。JRE には、SO に関連することを達成するためにネイティブを必要とするクラスがあり、アトミック値やスレッド (@yshavit に感謝) のように非常に低レベルですが、JRE ライブラリ コードの大部分は Java でプログラムされています。

于 2012-09-27T13:54:55.100 に答える