加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux中的Java – root和non-root的不同外观类

发布时间:2020-12-14 01:43:56 所属栏目:Linux 来源:网络整理
导读:我注意到 Java为root用户和非root用户提出了不同的外观和感觉类.我试图了解如何使LAF保持一致.而且,即使在用户/ root中也不一致:取决于用户/ root登录的方式: 示例代码(在laf.jar中编译和打包): import javax.swing.UIManager;public class laf { public
我注意到 Java为root用户和非root用户提出了不同的外观和感觉类.我试图了解如何使LAF保持一致.而且,即使在用户/ root中也不一致:取决于用户/ root登录的方式:

示例代码(在laf.jar中编译和打包):

import javax.swing.UIManager;

public class laf {
    public static void main(java.lang.String[] args) {
        try {
            System.out.print(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
        }
    }
}

方案1以普通用户身份登录到计算机(在GUI模式下)

样本输出(以用户身份)

[xxx@yyy Downloads]$java -classpath laf.jar laf
com.sun.java.swing.plaf.gtk.GTKLookAndFeel

样本输出(通过su切换到root)

[root@yyy Downloads]# java -classpath ./laf.jar laf
javax.swing.plaf.metal.MetalLookAndFeel

方案2以root身份登录到计算机(在GUI模式下)

示例输出(以root身份)

[root@yyy Downloads]# java -classpath ./laf.jar laf
com.sun.java.swing.plaf.gtk.GTKLookAndFeel

场景3作为普通用户通过SSH登录到计算机(类似于上面的场景#1,但在这种情况下 – 相同的LAF)

样本输出(以用户身份)

[xxx@yyy Downloads]$java -classpath laf.jar laf
javax.swing.plaf.metal.MetalLookAndFeel

示例输出(切换到root)

[root@yyy Downloads]# java -classpath ./laf.jar laf
javax.swing.plaf.metal.MetalLookAndFeel

软件版本:

[root@yyy Downloads]# java -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build pxa6470sr9fp10-20150708_01(SR9 FP10))
IBM J9 VM (build 2.6,JRE 1.7.0 Linux amd64-64 Compressed References     20150701_255667 (JIT enabled,AOT enabled)
J9VM - R26_Java726_SR9_20150701_0050_B255667
JIT  - tr.r11_20150626_95120.01
GC   - R26_Java726_SR9_20150701_0050_B255667_CMPRSS
J9CL - 20150701_255667)
JCL - 20150628_01 based on Oracle jdk7u85-b15

[root@yyy Downloads]# cat /etc/redhat-release 
Red Hat Enterprise Linux Workstation release 6.7 (Santiago)

解决方法

getSystemLookAndFeelClassName的第一行是:

public static String getSystemLookAndFeelClassName() {
    String systemLAF = AccessController.doPrivileged(
                         new GetPropertyAction("swing.systemlaf"));

因此您可以使用用户的JAVA_OPTS进行设置

-Dswing.systemlaf = javax.swing.plaf.metal.MetalLookAndFeel中

默认情况下.

将其添加到用户的.rc-File:

set JAVA_OPTS=-Dswing.systemlaf=javax.swing.plaf.metal.MetalLookAndFeel
export JAVA_OPTS

问候

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读