Не могу построить проект после установки JDK 7 - PullRequest
0 голосов
/ 16 декабря 2011

После установки jdk 7 и переключения платформы java для моего проекта в идеале, я получаю это при попытке собрать проект.

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 не говорит мне, что именно не так. Заранее спасибо.

1 Ответ

3 голосов
/ 16 декабря 2011

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

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

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

[править] Более подробную информацию о том, почему вы не должны использовать классы в пакетах com.sun, см. на этой странице .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...