Обновление до JDK 10 и обнаружение обширных ошибок компиляции в Eclipse - PullRequest
0 голосов
/ 07 октября 2018

ОБНОВЛЕНИЕ: в конце концов я обнаружил, что проблема, описанная ниже, была только начальной проблемой представления.Фактическая проблема заключается в том, что после обновления с Java 8 до Java 10 (и 11) Eclipse не смог правильно скомпилировать мой проект.Библиотека JDK и другие параметры были настроены правильно, и я получил около 1000 ошибок компиляции.

Нет никаких оснований для дальнейшего чтения

Я обновил свинг-приложениеот JDK 8 до JDK 10 (Oracle Java на Mac), и затмение жалуется, что javax.accessibility.Accessible отсутствует и требуется для одного из моих классов.Я понимаю, что означает эта ошибка, но я не могу понять, почему Eclipse не может найти этот пакет.Я искал в сети более часа, и я не могу сказать, что у кого-то есть эта проблема.Кажется, я должен иметь возможность получить доступ к этому пакету из JDK, но я, очевидно, что-то упускаю.

EDIT2:

Я выключил флаг, чтобы прервать сборку, когда он имеетошибка, и теперь я вижу, что есть сотни ошибок.Трудно сказать, какие из них являются первичными, но распространенным явлением является class java.awt.<SomeClass> is not accessible.Это, кажется, происходит для каждого класса AWT.Мой код не организован как модули, и я вижу java.desktop как неявно доступный на Modulepath.Кроме того, сборка муравья этого кода работает нормально.

РЕДАКТИРОВАТЬ:

Как предлагается в комментариях, это, вероятно, неверная конфигурация IDE, но я не знаю, что я могу исправить.Я был вдали от Java в течение нескольких лет, и хотя я достаточно поспорил, чтобы знать, что JDK был реорганизован с JDK 9, и были представлены модули, я не знаю, есть ли что-то, что я долженсделать явно, чтобы сделать пакет javax.accessibility доступным на пути к классам.Я просто добавил системную библиотеку JRE в путь сборки в проекте, как всегда делал с проектами Java в Eclipse.

В пользовательском интерфейсе настройки пути сборки я вижу системную библиотеку JRE (привязанную к JDK10) как единственная запись под Modulepath.В Системной библиотеке JRE я вижу несколько модулей, а над ними находится запись Is Module, которую я могу редактировать.Он показывает мне доступные модули слева и явно и неявно включенные модули в две таблицы дерева справа.Ни один из них не включает javax.accessibility, но jdk.accessibility указан как явно включенный.Ни один из доступных модулей слева не имеет никакого отношения к доступности.Так что я в растерянности относительно того, что я могу сделать дальше, чтобы включить этот недостающий пакет.Некоторые классы свинга зависят от него, поэтому, кажется, он должен быть там по умолчанию.

1 Ответ

0 голосов
/ 08 октября 2018

Оказывается, что Eclipse не поддерживает Java 10+, за исключением определенных (более старых) выпусков.Я использовал последнюю версию (4.9.0), и это представляло обширные проблемы компиляции (почти 1000 ошибок) с использованием Java 10 и Java 11 JDK.(Проблема javax.accessibility, описанная в моем вопросе, была только первой системой представления.)

Я установил Eclipse Oxygen.3a (4.7.3a), и все проблемы компиляции с использованием JDK 10 и 11 исчезли.Сначала возникла проблема, которая была легко решена.После импорта существующего Java-проекта в рабочую область было еще больше ошибок компиляции, чем раньше.Это было связано с тем, что настройка системной библиотеки JRE в файле .project была явно несовместимой.JRE появилась как несвязанная библиотека под Classpath.Я только удалил это и добавил Системную библиотеку JRE в Modulepath, и все скомпилировалось без ошибок.

Я видел сообщение от нескольких месяцев назад, что поддержка Eclipse Photon для Java 10 была в разработке, но яне пробовал.

...