如何在 16.04 中处理 SWT 应用程序

如何在 16.04 中处理 SWT 应用程序

似乎 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

相关内容