2011-12-16 54 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包中的类的更多信息。