,我會說我是比較新的的Java UI開發啓動這一關。所有涉及的機器都運行RHEL6。 Java是OpenJDK 1.7。我有一個應用程序(請原諒錯別字,我不得不手工複製從internetless環境這一點):Java應用程序遠程殺死的Xvnc服務器
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);
}
});
}
}
正如你所看到的,這一切都爲打印所有可用的字體系列,打印的默認字體家族,並用一些文字顯示一個小窗口。當我在本地運行時,它工作正常。我有顯示運行TurboVnc(turbo1.1)的遠程機:99,開始與命令
./Xvnc :99 -geometery 1000x1000 -ac
如果我使用scp我的應用程序到遠程機器,出口顯示器=:99.0,並運行它,它的工作原理精細。但是,如果我嘗試與顯示在本地運行我的應用程序導出到遠程主機:99.0,遠程的Xvnc服務器崩潰了雙自由或損壞。在回溯我看到一個AddGlyph電話。我有限的與X的經歷使我相信這是一個字體的問題,即在本地運行的應用程序試圖使用遠程計算機上不可用的字體。該
System.out.println("Using " + text_pane.getFont().getFontName());
調用並打印出來的時候無論是機器上運行相同的字體名稱(Dialog.plain),但我不知道這實際上意味着什麼。有沒有解決這個問題的方法?我是否完全從錯誤的角度出發?我要指出,xeyes和xterm的從本地機器出口到遠程顯示器時運行正常,這只是我的Java應用程序,殺死它。