5

我正在戴尔桌面上设置 Ubuntu 13.10。我已经安装了 sqldeveloper 并在我的 Desktop/ 目录中创建了一个 sqldeveoper.desktop 文件来启动程序。请参阅下面的代码。我的问题是:在我的桌面屏幕上,我将 .desktop 文件视为 sqldeveloper 图标(带有绿色箭头的圆形 db 图标)。我双击图标,程序启动。图标出现在我的 Unity 栏中,然后图像变为“?” 问号符号。

任何想法为什么会发生这种情况?icon.png(图像)位于桌面文件指向的位置。也许文件没有从 Unity 栏中正确看到路径?

sqldeveloper.desktop 代码:

[Desktop Entry]
Type=Application
Version=1.0
Name=SQL Developer
GenericName=Oracle Development Environment
Comment=Proprietary environment for managing Oracle databases
Exec=sqldeveloper %F
Icon=/opt/sqldeveloper/icon.png
Terminal=false
Categories=Development;IDE;
StartupNotify=true

感谢您对此的任何指导。约翰C

4

2 回答 2

3

背景

在 SQL Developer 版本 4.1.5 中,初始屏幕具有WM_CLASS(STRING) = oracle-ide-osgi-boot-OracleIdeLauncher。将其设置为 .desktop 文件中的键 StartupWMClass 的值一开始可以正常工作,而初始屏幕可见。

当 SQL Developer 的主窗口出现时,问题就出现了,因为第二个窗口只有通用的WM_CLASS(STRING) = sun-awt-X11-XFramePeer。由于我不完全理解的原因,在您的 .desktop 文件中为 StartupWMClass 设置此通用值不起作用。

此问题的一个可行解决方案是使用自定义 bash 脚本的 .desktop 文件。自定义脚本异步启动 Oracle 的启动脚本,然后等待主窗口出现,最后以编程方式将其 WM​​_CLASS 更改为启动屏幕使用的相同值。.desktop 文件也引用了 WM_CLASS。

自定义 bash 脚本

将其存储为 $HOME/bin/launch-sqldeveloper.sh

#!/bin/bash
JAVA_HOME=/usr/lib/jvm/java-8-oracle
SQLD_HOME=/opt/sqldeveloper

# Launch Oracle's startup script asynchronously
env JAVA_HOME=$JAVA_HOME $SQLD_HOME/sqldeveloper.sh $* &

i="0"
while [ $i -lt 20 ]
do

# Try to get SQL Developer window ID
WIN_ID=$(xwininfo -root -tree \
| grep -i 'oracle sql developer' \
| grep -oP '(0x[a-f0-9]+)')

# If it is non-empty (window already exists)
if [ -n "$WIN_ID" ]
then
    echo "WIN_ID=$WIN_ID"

# Set WM_CLASS property of main window to same value
# that is used for the launcher window
    xprop -id $WIN_ID \
          -f WM_CLASS 8s \
          -set WM_CLASS "oracle-ide-osgi-boot-OracleIdeLauncher"

# and exit loop
    break
else

# Otherwise sleep for one second and increment loop counter
    echo "Sleeping: $i"
    sleep 1s
    i=$[$i+1]

fi
done
echo "Done"

.desktop 文件

[Desktop Entry]
Type=Application
Terminal=false
Name=SQL Developer
Exec=sh -c '$HOME/bin/launch-sqldeveloper.sh %F'
Icon=/opt/sqldeveloper/icon.png
StartupWMClass=oracle-ide-osgi-boot-OracleIdeLauncher
于 2017-03-05T21:26:42.460 回答
0

假设您已经验证该图标位于 sqldeveloper.desktop 指向的位置(您可以ls /opt/sqldeveloper/icon.png从终端尝试)。

只需将此行添加到 sqldeveloper.desktop 文件

StartupWMClass=oracle-ide-boot-Launcher

并且不要忘记sudo update-desktop-database在保存更改后运行命令。

这对我有用 https://askubuntu.com/questions/458554/how-to-install-sql-developer-on-ubuntu-14-04

于 2016-07-13T06:12:24.270 回答