Javaがルートとルート以外のユーザーに対して異なるルック・アンド・フィール・クラスを提案していることに気付きました。 LAFを一貫性のあるものにする方法を理解しようとしています。また、それも、ユーザ/ルート内矛盾だ:LinuxのJava - ルートとルート以外のルック・アンド・フィールのクラス
サンプルコード(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モード)機械
サンプル出力(ユーザなど)
[[email protected] Downloads]$ java -classpath laf.jar laf
com.sun.java.swing.plaf.gtk.GTKLookAndFeel
サンプル出力
サンプル出力(ルートとしてルートとして(GUIモード)マシンにシナリオ2つのログ
[[email protected] Downloads]# java -classpath ./laf.jar laf
javax.swing.plaf.metal.MetalLookAndFeel
(スイッチsu
経由ルートに) )
[[email protected] Downloads]# java -classpath ./laf.jar laf
com.sun.java.swing.plaf.gtk.GTKLookAndFeel
シナリオ(上記のシナリオ#1と同様、この場合には - 同じLAF)正規ユーザとしてSSHを介して機械に3つのログに
サンプル出力(ユーザなど)
[[email protected] Downloads]$ java -classpath laf.jar laf
javax.swing.plaf.metal.MetalLookAndFeel
[[email protected] Downloads]# java -classpath ./laf.jar laf
javax.swing.plaf.metal.MetalLookAndFeel
ソフトウェア版
サンプル出力(ルートへの移行)シオン:
[[email protected] 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
[[email protected] Downloads]# cat /etc/redhat-release
Red Hat Enterprise Linux Workstation release 6.7 (Santiago)
これは、ユーザーの環境の違いに起因する可能性があります。さまざまなシナリオで 'env'の結果を試してみるか、Javaで' System.getenv() 'の結果を使用してください。 – fge
あなたの環境に 'GNOME_DESKTOP_SESSION_ID'という変数があるかどうか、さまざまな設定で確認できますか? – RealSkeptic
1)ユーザーが "これは駄目だ"と言った2) "su - "の後にルートとして空白を出力 –