Comportamento estranho da GUI Java no Windows PC via túnel SSH de/para máquina Linux

Comportamento estranho da GUI Java no Windows PC via túnel SSH de/para máquina Linux

Tenho um problema muito estranho com uma GUI Java que criei no trabalho. É tão estranho que nem sei por onde começar a procurar ajuda!!

Temos um sistema independente em um local externo que consiste em um PC Windows, rodando XP e uma máquina SuSE Linux. Eu construí uma GUI Java que executa alguns scripts bash na máquina Linux. A GUI é iniciada na máquina Windows porque o usuário não é Linux. A GUI foi construída para substituir scripts que apresentavam ao usuário prompts de linha de comando para fornecer entradas para os principais scripts de processamento.

O usuário clica em um ícone na área de trabalho do Windows que executa um arquivo DOS batch (*.bat). O arquivo em lote usa plink, com uma sessão PuTTY armazenada, para conectar-se à máquina Linux e executar um comando "java -jar XXX.jar" para iniciar a GUI. A GUI é exibida no PC com Windows devido ao servidor Cygwin/XX em execução no PC com Windows.

OK. Agora, a estranheza. Se eu deixar a GUI no local onde ela aparece inicialmente, está tudo bem. Se eu mover a GUI, os menus suspensos (caixas de combinação suspensas e menus suspensos) não funcionarão mais corretamente. E SOMENTE os menus suspensos. Todo o resto funciona bem (botões, campos de texto, ...). Se eu mover a GUI de volta ao local original, tudo funcionará bem. Se eu clicar, segurar e arrastar o cursor do mouse para onde a GUI apareceu inicialmente (deixando a GUI para onde a movi), os menus suspensos funcionarão corretamente.

No começo pensei que tinha um problema com a forma como inicializei os menus suspensos, mas não tenho mais tanta certeza. Estou me perguntando se há algo estranho acontecendo com as configurações do Windows <-> putty <-> linux ou do Xwin.

Contribuindo para não conseguir resolver isso é que não consigo replicar esse comportamento no trabalho. Infelizmente não temos uma réplica exata do sistema externo; Estou testando/construindo esta GUI em uma máquina XP para Debian Linux.

Como alguém viu algo assim? Alguma sugestão sobre o que pode estar acontecendo aqui?

Obrigado vezes um bilhão

Conta

Responder1

Não acho que executar Java por meio do redirecionamento X seja uma boa ideia.

Por que você não coloca o programa Java no PC com Windows e o usa para iniciar plinke executar o comando? Se você tiver o código-fonte do programa Java, deve ser trivial adicionar uma classe que envolva e substitua Runtime.getRuntime().exec()e coloque plinkna frente da linha de comando. Então talvez você possa trabalhar um pouco na aula para ela usar uma plinksessão para tudo. Então você também pode fazer outra classe com a mesma interface, mas não adiciona a plinkpara que seu programa Java possa rodar tanto no Windows quanto no Linux.

Responder2

Com Java 1.7 você pode usar -Dsun.java2d.xrender=trueum X Display remoto. Ele informa o java que está sendo executado no X. Consultehttp://docs.oracle.com/javase/7/docs/technotes/guides/2d/flags.html

Responder3

Pode ter algo a ver com a aceleração de hardware do Java 2D, o sistema gráfico do Java.

Tente desligar qualquer aceleração de hardware adicionando a seguinte opção de linha de comando do processo Java:

-Dsun.java2d.d3d=false

Há também uma referência completa às configurações Java 2Daqui. Desativar o Direct 3D tornará a interface do usuário mais lenta, mas para interfaces de usuário simples com apenas menus e sem animações, isso não deve importar.

informação relacionada