1. 程式人生 > 程式設計 >java編譯後的檔案出現xx$1.class的原因及解決方式

java編譯後的檔案出現xx$1.class的原因及解決方式

java編譯後的檔名字帶有$接數字的就是匿名內部類的編譯結果,接名字的就是內部類的編譯結果

例如:

TestFrame$1.class是匿名內部類的編譯結果,TestFrame$MyJob.class則是內部類MyJob編譯後得到的.

使用內部類可以隱藏一些實現的細節,等等,還有其他一些好處. 使用匿名類的時候,要注意程式碼的可讀性

補充知識:JNI之javah使用時報錯:找不到類檔案

初學java,想使用JNI,在用javah生成標頭檔案時,總是報錯找不到類;

看了javah的help,本來是很簡單的,但是由於自己概念含糊,所以出錯。

javah的命令列幫助:

用法:javah [選項] <類>其中 [選項] 包括:

-help 輸出此幫助訊息並退出

-classpath <路徑> 用於裝入類的路徑

-bootclasspath <路徑> 用於裝入引導類的路徑

-d <目錄> 輸出目錄

-o <檔案> 輸出檔案(只能使用 -d 或 -o 中的一個)

-jni 生成 JNI樣式的標頭檔案(預設)

-version 輸出版本資訊

-verbose 啟用詳細輸出

-force 始終寫入輸出檔案使用全限定名稱指定 <類>(例如,java.lang.Object)。

假如有這樣的類:

package mwic32; 
public 
class Main { 
  
  public native String GetICSN( int CommPort); 
  static
  { 
    System.loadLibrary("MwIc32.dll"); 
  }   
 
  public static void main(String[] args) 
  { 
    // TODO code application logic here
   } 
} 

假如專案目錄是:F:/NetBeansProjects,那麼編譯後生成的class檔案會位於F:/NetBeansProjects/MwIC32/build/classes/mwic32現在希望用JAVAH生成標頭檔案。

javah -classpath F:/NetBeansProjects/MwIC32/build/classes mwic32.Main

也就是說,指定類的路徑時,應該以包所在路徑為準,而不是具體類所在的子目錄

以上這篇java編譯後的檔案出現xx$1.class的原因及解決方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。