当我按照常规程序为 jvisualvm 创建启动器项时描述在这里,它的行为不符合预期。它不是直接启动应用程序,而是将应用程序作为不同的项目……发生了什么事???
重现步骤:
- 在 ~/jdk1.7.0 中下载并安装 Oracle JDK 1.7.0这里
- 按照常规步骤创建visualvm.desktop文件,并将可执行文件设置为~/jdk1.7.0/bin/jvisualvm
- 将 visualvm.desktop 文件拖到启动器上
- 通过新启动器启动应用
预期的:
- VisualVM 作为常规应用程序启动
实际情况:
- VisualVM 确实启动了,但它表现为一个新的不同的启动器中的项目,而不是我刚刚创建的项目
- 这个新项目有一个漂亮的图标,所以我尝试通过选中“保留在启动器中”来保留它而不是旧图标,但是,当我单击这个新项目时,什么也没有发生???
所以我的问题是:如何在 jvisualvm 启动器中创建一个行为良好的项目?
答案1
这是许多 JAVA 应用程序的已知问题,BAMF 框架(负责将窗口与其桌面文件匹配)在这些情况下会失败。请参阅此错误报告:https://bugs.launchpad.net/bamf/+bug/757991
答案2
此问题已记录在以下位置: https://bugs.launchpad.net/ubuntu/+source/visualvm/+bug/657048?comments=all
/usr/bin/jvisualvm 启动脚本(大约第 13 行)正在寻找:/usr/lib/jvm/java-6-openjdk :sv@ubu:~$ grep -n /usr/lib/jvm /usr/bin/jvisualvm 13:for j in /usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-6-sun; do
并且,假设 openjdk-6-jdk 包已经安装(sudo apt-get install openjdk-6-jdk),/usr/lib/jvm 中没有 /usr/lib/jvm/java-6-openjdk 的链接:sv@ubu:~$ ls /usr/lib/jvm java-1.6.0-openjdk-amd64 java-6-openjdk-amd64 java-6-openjdk-common
以下是我们的做法:
因此,为了匹配并使程序正常运行,只需创建一个符号链接:sv@ubu:~$ sudo ln -s /usr/lib/jvm/java-6-openjdk-amd64 /usr/lib/jvm/java-6-openjdk
注意:我使用的是 Ubuntu 12.04 64 位版本,因此您可能需要相应地调整符号链接。
答案3
使用以下答案这里。它是一个允许您向面板添加非原生应用程序的应用程序。