代码之家  ›  专栏  ›  技术社区  ›  Kevin

Java应用程序杀死远程Xvnc服务器

  •  0
  • Kevin  · 技术社区  · 8 年前

    首先,我要说我对Java UI开发相对较新。所有涉及的机器都在运行RHEL6。Java是OpenJDK 1.7。我有一个应用程序(请原谅拼写错误;我必须从无互联网环境中手动复制):

    import javax.swing.*;
    import java.awt.*;
    
    class TestApp{
     public static void main(String[] args){
      SwingUtilities.invokeLater(new Runnable(){
       @Override
       public void run(){
        GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
        Font[] fonts = e.getAllFonts();
        for (Font font: fonts){
         System.out.println(font.getFontName());
        }
        JTextArea text_pane = new JTextArea();
        System.out.println("Using " + text_pane.getFont().getFontName());
        text_pane.setText("HI");
        JFrame j = new JFrame();
        j.add(text_pane);
        j.setSize(new Dimension(100,100));
        j.setVisible(true);
       }
      });
     }
    }
    

    ./Xvnc :99 -geometery 1000x1000 -ac
    

    System.out.println("Using " + text_pane.getFont().getFontName());
    

    在任何一台机器上运行时,call都会打印出相同的字体名(Dialog.plain),但我不确定这是否真的意味着什么。有办法解决这个问题吗?我是不是完全从错误的角度来看这个问题?我应该注意,当从本地机器导出到远程显示器时,xeyes和xterm运行良好,只是我的Java应用程序杀死了它。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Kevin    8 年前

    如果有人偶然发现了这一点:问题是,我的Java版本足够新,默认情况下可以启用xrender,但远程服务器上的Xvnc版本很旧,不支持它。使用启动应用程序

    -Dsun.java2d.xrender=false