Java JDK 11 ломая старые банки / программы - PullRequest
0 голосов
/ 30 января 2019

Насколько я понимаю, Java JRE обратно совместимы, если вы напишите программу на Java (JDK) 7, она будет работать с Java (JRE) 8.

У меня есть пара программ, которые яразработанные в Java 8, и имеют файлы .jar и EXE, которые я создал, когда закончил, и они всегда работали нормально.Однако после установки Java JDK 11 (11.0.2) эти старые файлы .jar ломаются ...

  • Несколько из них все еще работают, но их GUI расширились, кнопки и изображения стали большечем раньше, а в некоторых случаях размыто
  • Одна программа просто не запускается вообще, при попытке запустить ее в консоли выдается исключение: " Исключение в потоке" AWT-EventQueue-0 "java.lang.NoClassDefFoundError: javax / активации / ActivationDataFlavor"

Я понимаю, что этот класс и некоторые другие классы javax были удалены из JDK 11, поэтому с точки зрения разработки вы не могли бы использоватьих больше без инструмента, такого как Maven.Но я не понимаю, почему установка JDK 11 влияет на мои старые jar-файлы, так как я не устанавливал новый JRE, и даже если он был в комплекте, он должен быть обратно совместим?

Слишком добавить вдля этого я использую Apache NetBeans 10, он отлично работал с Java 8, но после того, как я установил JDK 11, NetBeans 10 все еще работал, но его окно загрузки было большим и размытым, а изображения в среде IDE размытыми, а весь текст больше.

Так почему же установка JDK 11 так негативно влияет на старые программы?

Примечание. Я пытался связать файлы jar / exe-файлы с javaw.exe из JREверсия 8 (201), но все они имеют одинаковые проблемы.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Java сильно пытается быть обратно совместимым, но иногда изменения, которые не являются обратно совместимыми, необходимы для развития экосистемы.До сих пор они выпускались как часть большого выпуска, например, Java 9, 10, 11. Скорее всего, вы подвержены влиянию Java 11 JEP 320: удалите модули Java EE и CORBA .

* 1004.* Помните, что Java 8 была выпущена в 2014 году .В течение 5 лет Oracle и сообщество предоставляли исправления и исправления безопасности для Java 8, но предоставлять их навсегда невозможно.
0 голосов
/ 30 января 2019

Проблема, с которой вы сталкиваетесь, скорее всего, не является несовместимостью с байт-кодом.Это просто отсутствующий класс.

Java 11 отказалась от поддержки некоторых старых технологий - например, Java-апплетов.Если вы запустите апплет Java 8 в JDK / JRE Java 11, вы получите исключение ClassNotFound только потому, что Java 11 не предоставляет class / jar.

Аналогично для JavaFX, который все еще существует, но не дольшечасть дистрибутива Java.Вы должны добавить его как отдельный Jar.

Я считаю, что было бы возможно добавить эти классы в проект.Лично я хотел бы видеть порт.

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