Это реальная причина, может быть,
из ответа форума maven
"Джером прав, что не рекомендуется использовать com.sun
классы от rt.jar. И особенно те, которые помечены как «внутренние»; ты просто
просить неприятностей.
Однако мне было любопытно, поэтому попробовал. Вышеупомянутый класс может
действительно быть доступным для Eclipse. Однако компиляция кода на
командная строка с использованием javac завершается с ошибкой «не существует». Так что мой
Предполагается, что Java компилятор Sun обнаруживает, когда специальный
Доступ к внутреннему классу осуществляется, и он отказывается импортировать класс.
Eclipse использует другой компилятор, который, по-видимому, не имеет этой проверки.
Maven просто использует компилятор javac, доступный при выполнении системы
дорожка. Поэтому проблема не имеет ничего общего с Maven. Это
компилятор, который вызывает maven, который отказывается компилировать исходный код.
Я не вижу никаких общедоступных флагов в командной строке javac, чтобы отключить это
«блокирование» внутреннего доступа, поэтому если вы не хотите избегать использования Sun's
компилятор javac, вам просто нужно избегать использования этого внутреннего класса.
Просто для забавы, я опробовал предложение Джерома поставить rt.jar на
Путь к классам:
javac -cp /usr/java/jdk1.6.0_03/jre/lib/rt.jar Foo.java
но это все еще не удалось собрать.
Класс ByteOutputStream может быть загружен во время выполнения через
Class.forName ( "..").
Интересно, что проект, над которым я работаю, действительно импортирует класс
com.sun.org.apache.xml.internal.utils.SAXSourceLocator;
и это работает нормально. Предупреждения выдаются, но код компилируется (и да,
это в моем списке TODO, чтобы исправить это :-). Так что это не все внутренние классы
которые блокируются, только выбранные. «