Eclipse中Access restriction: The type ‘XXX’ is not API 解決

報此錯誤只需將jre由jdk路徑下的jre改爲外部的jre即可,具體做法爲:


Project -> Properties -> Java Build Path -> Libraries,選中JRE System Library,然後Remove。再點擊Add Library -> JRE System Library -> next,選擇Alternatie JRE,點擊Installed JREs,選擇jdk同級目錄下的jre即可,然後依次點擊Apply -> ok即可。


瞭解一下Java中的兩個jre的作用:(以下內容來自http://blog.sina.com.cn/s/blog_7ffb8dd501011sgc.html)


1、jdk下bin目錄裏的java.exe與外部jre中的java.exe的祕密 
  jdk裏的java.exe和jre中的java.exe其實是一樣的,但我們在運行的時候用的卻是優先使用外部jre中的java.exe(即使我們安裝了JDK且也配置了環境變量)。 
首先,我們看下JDK的安裝過程中發生了什麼事: 
安裝JDK時一定會在其子目錄下面安裝一個JRE,同時在安裝的過程也會詢問你是否要安裝一 個外部的JRE。如果我們選擇安裝則就同時擁有了兩個jre。這兩個JRE其實本質上是沒有任何分別的。最主要的區別在於:JDK目錄裏面的JRE主要是 設計用來運行JDK自帶的那些工具的(Bin目錄下)。而外部的JRE在安裝的時候會自動註冊到操作系統的path(但在 我的電腦\屬性\高級系統設置\環境變量\系統變量中的 path中並沒有包含該命令的路徑值)裏面一般是:System32文件夾下 (該文件夾下包含:java.exe javaw.exe javaws.exe 三個文件)面。因此我們只要安裝了外部的JRE(即使JDK沒有安裝,環境變量沒有配置)則運行Java程序時都是用的外部JRE的java.exe程序來運行的(即使安裝了JDK且配置了環境變量)(系統的默認path具有優先)。 


2、 
  簡單的說JDK是面向開發人員使用的SDK 。SDK是Software Development Kit 一般指軟件開發包,可以包括函數庫、編譯程序等。 
JDK(JAVA Develop Kit,JAVA開發工具包)提供了Java的開發環境和運行環境,主要用於開發JAVA程序,面向Java程序的開發者; 
JRE(JAVA Runtime Environment,JAVA運行環境)提供了Java的運行環境,主要用於執行JAVA程序,面向Java程序的使用者。 
一般情況下,每個JDK裏面包含兩套JRE。以JDK jdk1.6.0_22(默認安裝路徑是E:\Program Files\Java)爲例,在E:\Program Files\Java\jdk1.6.0_22\目錄下有一個JRE,在C:\Program Files\Java\目錄下也有一個JRE。爲什麼會有兩套JRE呢?因爲JDK裏面的工具也是用JAVA編寫的,它們本身運行的時候也需要一套 JRE,即E:\Program Files\Java\jdk1.6.0_22\目錄下的JRE。而E:\Program Files\Java\目錄下的JRE是用來執行我們自己編寫的JAVA程序。當然,兩套JRE中的任何一套都可以用來執行我們自己編寫的JAVA程序, 但是JDK裏面的工具只能由E:\Program Files\Java\jdk1.6.0_22\目錄下的JRE來執行。 
既然在我們的電腦裏面至少有兩套JRE(如果安裝了Borland JBuilder等高級開發工具,電腦裏面會有更多套的JRE),那麼由誰來決定使用哪一套JRE呢?這個重擔就落在java.exe的身上。(當然對於 1 中我們安裝了JDK的情況下,默認就是外部的JRE執行了!!!) 
當我們在命令行輸入: 
java xxx 
的時候,java.exe的任務就是在我們電腦上衆多的JRE中找到合適的JRE來執行xxx。java.exe依據以下順序來尋找JRE: 
(1)自己的目錄下有沒有JRE目錄; 
(2)父目錄下有沒有JRE目錄; 
(3)查詢註冊表HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\ 
所以java.exe的執行結果與我們電腦裏哪一個java.exe(搜索一下就會發現我們電腦裏面也不止一個java.exe)被執行以及哪套JRE來執行JVA程序有很大的關係。 
另外,java.exe在找到合適的JRE以後,還有一個驗證版本的程序,也就是java.exe與JRE的版本一致纔可以執行。如果出現版本不一致的問題,一定要記得兩件事情: 
(1)哪一個java.exe被執行; 
(2)java.exe找到哪一套JRE。 
只要這兩件事情確定了,我們就抓住了問題的來龍去脈,解決起來也就輕而易舉了。 
3、 
JVM(JAVA Virtual Machine,JAVA虛擬機)是JRE的一部分,JRE是JVM的補充。那麼JVM到底在哪裏呢?我們打開C:\Program Files\Java\jdk1.5.x\jre\bin,會看到client和server兩個目錄,在這兩個目錄中分別可以看到jvm.dll,這就 是我們所說的JVM之所在。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章