tools.jar больше не на пути к классам? - PullRequest
1 голос
/ 09 августа 2011

Я недавно переформатировал свою систему с Fedora 15 32 до Fedora 15 64-bit. Я установил 64-битную версию Java, запустил свежий экземпляр Netbeans, попытался создать свой проект, использующий Project Lombok, и получил следующее:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac/parser/Scanner$Factory
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at lombok.delombok.DelombokApp$1.loadStreamAsClass(DelombokApp.java:102)
    at lombok.delombok.DelombokApp$1.loadClass(DelombokApp.java:117)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at lombok.delombok.Delombok.delombok(Delombok.java:358)
    at lombok.delombok.Delombok.main(Delombok.java:190)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at lombok.delombok.DelombokApp.runApp(DelombokApp.java:55)
    at lombok.core.Main.go(Main.java:127)
    at lombok.core.Main.main(Main.java:41)
Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.parser.Scanner$Factory
    at java.lang.ClassLoader.findClass(ClassLoader.java:522)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at lombok.delombok.DelombokApp$1.loadClass(DelombokApp.java:118)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 15 more

Я никогда не получал эту ошибку раньше. Эта конкретная ошибка возникла из-за того, что подключаемый модуль Maven exec пытался выполнить lombok, чтобы сделать некоторый исходный код. На старой системе это работало все время без проблем. Теперь его нет.

Что удивительно, так это то, что в старой системе это работало, хотя я использовал Java 6 и более поздние версии Java 7 без необходимости делать что-то особенное. Я также часто удалял Netbeans и его файлы, либо обновляя его до новой версии, либо просто хотел ускорить его снова. Так что нет никаких специальных настроек или флажков, которые я мог бы изменить в любой программе. Даже тогда я не помню, чтобы я делал что-то особенное, чтобы это работало.

Почему я вдруг получаю эту ошибку? Почему tools.jar не добавляется автоматически в путь к классам? И если это нормальное поведение, то как оно работало раньше?

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Сегодня я наконец выяснил, в чем проблема: изначально была установлена ​​Java 6, и я сразу перешел на Java 7.

По сути, я запускал Netbeans и Maven на Java 7, который находился в папке у меня домапапка.Я фактически установил Java 6 в ОС, и он был на моем пути.Очевидно, что Java 6 (по крайней мере, версии Linux) по умолчанию включает tools.jar, что позволяет Lombok работать правильно.Java 7 этого не делает.

Когда плагин Maven Exec работал, он фактически использовал Java 6, хотя я запустил Maven под Java 7. Когда Java 6 была заменена на 7, он больше не работал, вызывая эту ошибку.

0 голосов
/ 09 августа 2011

java ссылка на правильную версию?

java -version 

type java

С уважением, Stéphane

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