2011-12-16 2 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) 

Я знаю, что солнце переключилось на какой-то апис или что-то в этом роде, но идеон не говорит мне, что именно не так. Заранее спасибо.

+0

у вас есть полная трассировка стека. Не могли бы вы вставить фрагменты кода? – emesx

+1

Используете ли вы пользовательский обработчик аннотации? Btw, он сообщает вам, что не так: отсутствует метод 'com.sun.tools.javac.util.Name $ Table.instance (com.sun.tools.javac.util.Context)'. Возможно, пакет изменился или могут быть дополнительные параметры и т. Д. – Thomas

ответ

3

Вы действительно должны поделиться своим кодом, вызывающим исключение, но исключение указывает, что вы используете внутренний Java API (любой класс, содержащийся в пакетах com.sun). Вы не должны использовать эти API напрямую, поскольку они считаются частными реализациями и могут быть изменены. Поскольку эти API являются частными, это не так просто, как поиск Javadoc, чтобы узнать, какие методы доступны, но достаточно сказать, что метод, который вы вызываете, не существует. У вас есть несколько вариантов:

  1. Если вы вызываете этот метод напрямую, вам нужно реорганизовать. Вы должны искать способы выполнения одной и той же работы с использованием общедоступных API.
  2. Если это происходит после вызова метода библиотеки, вы должны сообщить об ошибке с помощью поддерживающего библиотеку сообщения об ошибке и рисках использования API-интерфейсов com.sun.
  3. Если это произойдет после вызова открытого Java API (что-либо в пакетах java или javax), то вы должны отправить отчет об ошибке в Oracle. Однако это кажется маловероятным.

Кроме того, если вы поделитесь своим кодом, мы сможем вам лучше помочь.

Дополнительную информацию о том, почему вы не должны использовать классы в пакетах com.sun, см. В разделе this page.

+0

спасибо за ответ. Это не код, когда я пытаюсь построить проект. Я использую NetBeans IDE, который использует ant script – bunnyjesse112

+1

Но, это * IS * код. Ваш код не компилируется, потому что вы вызываете метод, который не существует. –

+0

Проблема была в сторонней библиотеке, удалили ее и скомпилировали проект. Спасибо за помощь! – bunnyjesse112

Смежные вопросы