2017-07-28 11 views
0

これは、私が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); 
    } 
    }); 
} 
} 

あなたが見ることができるように、このすべてが利用可能なすべてのフォントファミリは、デフォルトのフォントファミリを印刷するプリントがあるん、少しのテキストを含む小さなウィンドウを表示します。これをローカルで実行するとうまくいきます。 、99私は、リモートマシン、輸出DISPLAY =に私のアプリをscpした場合は、コマンドで

./Xvnc :99 -geometery 1000x1000 -ac 

を開始しました::私は、ディスプレイ上でTurboVncを実行しているリモートマシン(turbo1.1)が99.0、およびそれを実行し、それが動作します良い。ただし、remotehost:99.0にエクスポートされたディスプレイでアプリケーションをローカルで実行しようとすると、リモートのXvncサーバーが2回の空きまたは破損でクラッシュします。バックトレースでは、私はAddGlyph呼び出しを参照してください。私の限られた経験は、これがフォントの問題だと考えています。つまり、ローカルに動作しているアプリケーションがリモートマシンで利用できないフォントを使用しようとしています。

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

コールはいずれかのマシン上で実行同じフォント名(Dialog.plain)をプリントアウトしないが、私はそれが実際には何を意味かはわかりません。この問題を回避する方法はありますか?私は間違った角度から完全に来ていますか? xeyesとxtermは、ローカルマシンからリモートディスプレイにエクスポートされたときに正常に動作することに注意してください。それは、それを殺すJavaアプリケーションです。

答えて

0

誰かがこの問題に遭遇した場合、問題は、私のJavaのバージョンが、xrenderをデフォルトで有効にするには十分であるが、リモートサーバーのXvncバージョンは古く、サポートしていないという点です。

-Dsun.java2d.xrender=false 

でアプリケーションを起動しました。