似乎 Xenial (16.04) 中的 SWT(基于 eclipse)应用程序大多与默认 jdk(即 openjdk 8)不兼容。这包括 Eclipse IDE、Gantproject 等...
它们要么无法加载,要么无法按预期工作(操作永无止境,...)。这与 SWT 与 GTK3 集成不佳有关,尤其是与 Xenial 附带的最新版本集成不佳(在 Google 中搜索 SWT GTK3 会发现大量与该问题相关的问题和博客)。
大多数情况下,export SWT_GTK3=0
都可以解决这个问题(它会恢复到 GTK2)。
所以我的问题是:处理 Xenial 的这个问题的最佳方法是什么?
- 为系统全局设置
SWT_GTK3=0
(那么最好怎么做,,,/etc/bash.bashrc
???/etc/environment
)? - 将问题报告给 Ubuntu,以便在发布之前解决它?那么,相关的软件包是什么?(default-jdk、swt-gtk、???)请注意,关于该主题已经存在错误报告:https://bugs.launchpad.net/ubuntu/+source/swt-gtk/+bug/1552764,我对其进行了编辑,使其更加通用,而不仅仅是 eclipse IDE
- 还有其他选择吗?
答案1
该问题已通过您提供的链接报告给 Ubuntu,因此目前不需要采取进一步措施。
如果SWT_GTK3=0
效果良好,您应该尽可能将其设置为非全局的。有几种方法可以做到这一点(选择最后一种适合您的情况的方法):
/etc/environment
适用于每个用户的所有事物,而不仅仅是 Java 程序/etc/bash.bashrc
适用于bash
每个用户开始的事情,而不仅仅是 Java。~/.bashrc
适用于bash
当前用户开始的事情,而不仅仅是 Java。- 以下内容将适用于
bash
使用该命令的每个用户启动的内容java
。按++Ctrl并运行以下命令:AltT
sudo -i
mkdir -p /usr/local/bin
echo '#!/bin/sh' > /usr/local/bin/java
echo 'SWT_GTK3=0 /usr/bin/java $*' >> /usr/local/bin/java
chmod a+x /usr/local/bin/java
exit
exit
- 以下内容将适用
bash
于当前用户使用该java
命令启动的事物。按++Ctrl并运行以下命令:AltT
mkdir -p ~/bin
echo '#!/bin/sh' > ~/bin/java
echo 'SWT_GTK3=0 /usr/bin/java $*' >> ~/bin/java
chmod a+x ~/bin/java
exit
答案2
我今天早上刚winbuilder designer
上班。我会分享的。
安装oracle jdk8,并删除open jdk。要清除,请执行此命令。
sudo apt-get purge openjdk-\*
要安装 oracle jdk,请使用 ppa 和安装程序说明。复杂的手动方法和 ppa 方法可在此处找到。(如果需要,google 也可以提供帮助) 在 Ubuntu 上将 openjdk 替换为 oracle-jdk