我正在戴尔桌面上安装Ubuntu 13.10.我已经安装了sqldeveloper并在我的Desktop / dir中创建了一个sqldeveoper.desktop文件来启动该程序.见下面的代码.我的问题是:在我的桌面屏幕上,我看到.desktop文件是一个sqldeveloper图标(带有绿色箭头的圆形db图标).我双击图标,程序启动.图标出现在我的Unity栏中,然后图像变为’?’问号符号.
任何想法为什么会这样? icon.png(图像)位于桌面文件指向的位置.也许文件没有从Unity栏中正确看到路径?
[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
感谢您的任何指导.
JohnC
解决方法
背景
在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更改为启动屏幕使用的相同值. WM_CLASS也由.desktop文件引用.
自定义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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。