Задать вопрос

Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

Признаюсь сразу, формирование java-окружения не самая сильная моя сторона...

Пробую запустить приложение HermesJMS (1.14) на линуксе.
openjdk version "11.0.23" 2024-04-16

При запуске получаю ошибку:

...
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: sun/reflect/Reflection
        at com.jidesoft.plaf.UIDefaultsLookup.getCallerClassLoader(Unknown Source)
        at com.jidesoft.plaf.UIDefaultsLookup.get(Unknown Source)
        at com.jidesoft.swing.ContentContainer.updateUI(Unknown Source)
        at java.desktop/javax.swing.JPanel.<init>(JPanel.java:86)
        at java.desktop/javax.swing.JPanel.<init>(JPanel.java:109)
        at java.desktop/javax.swing.JPanel.<init>(JPanel.java:117)
        at com.jidesoft.swing.ContentContainer.<init>(Unknown Source)
        at com.jidesoft.action.DefaultDockableBarDockableHolder.createContentContainer(Unknown Source)
        at com.jidesoft.action.DefaultDockableBarDockableHolder.initFrame(Unknown Source)
        at com.jidesoft.docking.DefaultDockableHolder.<init>(Unknown Source)
        at com.jidesoft.action.DefaultDockableBarDockableHolder.<init>(Unknown Source)
        at hermes.browser.HermesBrowser.<init>(HermesBrowser.java:323)
        at hermes.browser.HermesBrowser$3.run(HermesBrowser.java:227)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.ClassNotFoundException: sun.reflect.Reflection
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
        ... 26 more


В гуглах нашел, что класс Reflection устарел и исключен...
Предполагаю, что мой jdk уже слишком свежий для приложения.

Нашел rt.jar, в котором находится этот класс sun/reflect/Reflection, попробовал просто в стартовом скрипте /opt/HermesJMS/bin/hermes.sh перед последней строчкой добавить
LOCALCLASSPATH=/opt/rt.jar:$LOCALCLASSPATH
не помогло.

9-м и 10-м jdk - этой ошибки нет, приложение пробует запуститься через Х, но сразу просто завершается

Могу ли я каким-то образом добавить эту джарку в своё окружение?
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Не надо добавлять ничего на исключениях, надо почитать про модульность.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы