2011-12-16 64 views
0

安裝jdk 7並在我的項目中切換Java平臺在IDE中我試圖建立項目時得到這個。安裝jdk後無法建立項目7

warning: [options] bootstrap class path not set in conjunction with -source 1.6 


An annotation processor threw an uncaught exception. 
Consult the following stack trace for details. 
java.lang.NoSuchMethodError: com.sun.tools.javac.util.Name$Table.instance(Lcom/sun/tools/javac/util/Context;)Lcom/sun/tools/javac/util/Name$Table; 
    at uk.org.retep.util.javac.JavacUtils.<init>(JavacUtils.java:128) 
    at uk.org.retep.util.annotation.AnnotationScannerProcessor.process(AnnotationScannerProcessor.java:76) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:793) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:722) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1700(JavacProcessingEnvironment.java:97) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1029) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1163) 
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1106) 
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:824) 
    at com.sun.tools.javac.main.Main.compile(Main.java:419) 
    at com.sun.tools.javac.main.Main.compile(Main.java:333) 
    at com.sun.tools.javac.main.Main.compile(Main.java:324) 
    at com.sun.tools.javac.Main.compile(Main.java:76) 
    at com.sun.tools.javac.Main.main(Main.java:61) 

我知道太陽切換了一些apis或什麼,但ide不告訴我什麼是錯的。提前致謝。

+0

你有一個完整的堆棧跟蹤。你能粘貼代碼片段嗎? – emesx 2011-12-16 17:35:25

+1

你使用自定義註釋處理器嗎?順便說一句,它告訴你什麼是錯的:方法`com.sun.tools.javac.util.Name $ Table.instance(com.sun.tools.javac.util.Context)`缺少。該軟件包可能已更改或可能有其他參數等。 – Thomas 2011-12-16 17:41:39

回答

3

您應該真的分享導致異常的代碼,但異常表明您正在使用內部Java API(包含在com.sun包中的任何類)。你不應該直接使用這些API,因爲它們被認爲是私有實現並且可能會發生變化。由於這些API是私有的,它不像尋找Javadoc來查看可用的方法那麼簡單,但足以說明你調用的方法不存在。你有幾個選擇:

  1. 如果你直接調用這個方法,你需要重構。您應該尋找使用公共API完成相同工作的方法。
  2. 如果在調用庫方法後發生這種情況,應該向庫維護人員報告錯誤並告知他們有關使用API​​的風險和錯誤。
  3. 如果在調用公共Java API(javajavax軟件包中的任何內容)之後發生這種情況,那麼您應該向Oracle提交錯誤報告。但這似乎不太可能。

此外,如果您分享您的代碼,我們可能能夠更好地幫助您。

有關詳細信息,請參閱this page,以瞭解有關您爲什麼不應使用com.sun包中的類的更多信息。