Вопрос или проблема
Я следую инструкции по адресу https://www.youtube.com/watch?v=_sIS3-4TELc, но когда я запускаю sqldeveloper, чекбокс “Save Password” не может быть отмечен.
Подробно: я загружаю sqldeveloper
SQL Developer 24.3.1 с сайта oracle.
https://www.oracle.com/hk/database/sqldeveloper/technologies/download/
Затем выбираю другую платформу.
Далее распаковываю и перемещаю в папку /opt, затем выполняю команду
chmod +x /opt/sqldeveloper/sqldevveloper.sh
Затем перехожу в папку /opt/sqldeveloper и запускаю sqldeveloper с помощью команды
./sqldeveloper.sh
В фоновом терминале я вижу следующую ошибку при запуске sqldeveloper, но не знаю, связано ли это, ошибка:
java.lang.IllegalAccessException: class oracle.ideimpl.config.EnvironOptionsPanel cannot access class com.sun.java.swing.plaf.gtk.GTKLookAndFeel (in module java.desktop) because module java.desktop does not export com.sun.java.swing.plaf.gtk to unnamed module @38dddff8
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:490)
at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347)
at java.base/java.lang.Class.newInstance(Class.java:645)
at oracle.ideimpl.config.EnvironOptionsPanel._initLafCombo(EnvironOptionsPanel.java:540)
at oracle.ideimpl.config.EnvironOptionsPanel.initComponents(EnvironOptionsPanel.java:238)
at oracle.ideimpl.config.EnvironOptionsPanel.<init>(EnvironOptionsPanel.java:99)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at javax.ide.util.MetaClass.newInstance(MetaClass.java:145)
at oracle.dbtools.raptor.standalone.IndexedPreferencesCommand$IndexPreferencesTask.doWork(IndexedPreferencesCommand.java:122)
at oracle.dbtools.raptor.standalone.IndexedPreferencesCommand$IndexPreferencesTask.doWork(IndexedPreferencesCommand.java:65)
at oracle.dbtools.raptor.backgroundTask.RaptorTask.call(RaptorTask.java:204)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at oracle.dbtools.raptor.backgroundTask.RaptorTaskManager$RaptorFutureTask.run(RaptorTaskManager.java:798)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Gtk-Message: 11:07:53.312: Failed to load module "canberra-gtk-module"
java.lang.IllegalAccessException: class oracle.ideimpl.config.EnvironOptionsPanel cannot access class com.sun.java.swing.plaf.gtk.GTKLookAndFeel (in module java.desktop) because module java.desktop does not export com.sun.java.swing.plaf.gtk to unnamed module @38dddff8
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:490)
at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347)
at java.base/java.lang.Class.newInstance(Class.java:645)
at oracle.ideimpl.config.EnvironOptionsPanel._initLafCombo(EnvironOptionsPanel.java:540)
at oracle.ideimpl.config.EnvironOptionsPanel.initComponents(EnvironOptionsPanel.java:238)
at oracle.ideimpl.config.EnvironOptionsPanel.<init>(EnvironOptionsPanel.java:99)
at oracle.dbtools.raptor.config.EnvironOptionsPanelWrapper.<init>(EnvironOptionsPanelWrapper.java:30)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at javax.ide.util.MetaClass.newInstance(MetaClass.java:145)
at oracle.dbtools.raptor.standalone.IndexedPreferencesCommand$IndexPreferencesTask.doWork(IndexedPreferencesCommand.java:122)
at oracle.dbtools.raptor.standalone.IndexedPreferencesCommand$IndexPreferencesTask.doWork(IndexedPreferencesCommand.java:65)
at oracle.dbtools.raptor.backgroundTask.RaptorTask.call(RaptorTask.java:204)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at oracle.dbtools.raptor.backgroundTask.RaptorTaskManager$RaptorFutureTask.run(RaptorTaskManager.java:798)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Версия Ubuntu:22.04, версия Sqldeveloper:24.3.1.347, версия java:17.0.14
*** Редактировать: Этих двух ошибок при запуске теперь нет, но чекбокс сохранения пароля все еще не может быть отмечен. ***
Теперь при запуске отображаются следующие предупреждения и нет ошибок:
Oracle SQL Developer
Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
WARNING: A terminally deprecated method in java.lang.System has been called
WARNING: System::setSecurityManager has been called by org.netbeans.TopSecurityManager (file:/opt/sqldeveloper/netbeans/platform/lib/boot.jar)
WARNING: Please consider reporting this to the maintainers of org.netbeans.TopSecurityManager
WARNING: System::setSecurityManager will be removed in a future release
WARNING: A terminally deprecated method in java.lang.System has been called
WARNING: System::setSecurityManager has been called by oracle.ide.IdeCore (file:/opt/sqldeveloper/ide/extensions/oracle.ide.jar)
WARNING: Please consider reporting this to the maintainers of oracle.ide.IdeCore
WARNING: System::setSecurityManager will be removed in a future release
Ответ или решение
Ваш вопрос о проблемах с невозможностью установки флажка "Сохранить пароль" в приложении SQL Developer на Ubuntu 22.04 является довольно распространенной проблемой при использовании данного программного обеспечения вместе с определенными версиями Java и Ubuntu. Позвольте мне предложить систематический подход к решению этой проблемы, рассматривая теорию, примеры и применение.
Теория
SQL Developer — это мощное средство для управления базами данных, созданное Oracle, которое требует определенных зависимостей и корректной конфигурации для работы. На платформе Linux, такой как Ubuntu, могут возникать специфические проблемы совместимости, которые необходимо учитывать. Это особенно актуально при учете взаимодействия между различными версиями Java и библиотеками пользовательского интерфейса (Look and Feel), такими как GTK, часто используемыми в настольных средах Linux.
Пример
Из вашего сообщения можно выявить несколько важных проблем:
- Версия Java: Ваша конфигурация использует Java 17.0.14, что может быть источником проблемы по совместимости, так как SQL Developer может требовать более раннюю версию Java для корректной работы.
- Ошибки GTK: Сообщения об ошибках связаны с GTK, что указывает на возможные проблемы с набором библиотек для Java, который взаимодействует с десктопными элементами пользовательского интерфейса Ubuntu.
- Настройки безопасности Java: В предупреждениях указывается использование устаревших методов, таких как
System.setSecurityManager
, что может вызывать конфликты с разрешениями на уровне системы.
Применение
Чтобы решить указанную проблему, можно предпринять следующие шаги:
-
Проверка версии Java:
Убедитесь, что ваша конфигурация Java совместима с SQL Developer. Официально поддерживаемые версии Java указываются в документации Oracle. Попробуйте использовать Java 11, которая известна своей стабильностью и совместимостью с SQL Developer.sudo update-alternatives --config java
Выберите нужную версию Java в списке или установите недостающую, с помощью:
sudo apt install openjdk-11-jdk
-
Установка зависимостей для GTK:
Убедитесь в наличии библиотек, необходимых для полноценной работы GTK на вашей системе. Установите необходимые пакеты, с помощью:sudo apt install libcanberra-gtk-module libcanberra-gtk3-module
-
Проверка и настройка конфигурации SQL Developer:
Убедитесь, что конфигурационные файлы SQL Developer корректны. Вы можете изменить файлsqldeveloper.conf
, который находится в директории/opt/sqldeveloper/sqldeveloper/bin
, добавив или изменив строку:SetJavaHome /path/to/your/java
Убедитесь, что
path/to/your/java
соответствует используемой версии Java. -
Использование альтернативных тем интерфейса:
Иногда проблемы с GUI можно обойти, изменив тему пользовательского интерфейса на другую, менее требовательную. Проверьте возможности изменения темы в настройках SQL Developer напрямую. -
Очистка кеша и переустановка SQL Developer:
Удаление данных кеша или полная переустановка программы также может помочь в решении проблем. Для удаления кеша:rm -rf ~/.sqldeveloper
Затем загрузите и переустановите SQL Developer, следуя инструкциям с официального сайта.
-
Проверка на исправления и обновления:
Обратитесь в поддержку Oracle или на форумы пользователей для поиска специфических исправлений для вашей версии Ubuntu и SQL Developer.
Следуя этим рекомендациям, вы сможете устранить проблемы с "Сохранением пароля" в SQL Developer на Ubuntu. Если проблема сохранится, это может быть связано с более сложными проблемами совместимости, которые потребуют детального анализа и помощи от команды техподдержки Oracle.