Linux 시스템과의 SSH 터널링을 통해 Windows PC에서 이상한 Java GUI 동작

Linux 시스템과의 SSH 터널링을 통해 Windows PC에서 이상한 Java GUI 동작

직장에서 만든 Java GUI에 매우 이상한 문제가 있습니다. 너무 이상해서 어디서부터 도움을 구해야 할지 모르겠습니다!!

우리는 XP를 실행하는 Windows PC 및 SuSE Linux 시스템으로 구성된 오프사이트 위치에 독립형 시스템을 보유하고 있습니다. Linux 시스템에서 일부 bash 스크립트를 실행하는 Java GUI를 구축했습니다. 사용자가 Linux 사용자가 아니기 때문에 GUI는 Windows 시스템에서 시작됩니다. GUI는 기본 처리 스크립트에 입력을 제공하기 위한 명령줄 프롬프트를 사용자에게 제공하는 스크립트를 대체하기 위해 구축되었습니다.

사용자는 DOS 배치(*.bat) 파일을 실행하는 Windows 바탕 화면의 아이콘을 클릭합니다. 배치 파일은 저장된 PuTTY 세션과 함께 plink를 사용하여 Linux 시스템에 연결하고 "java -jar XXX.jar" 명령을 실행하여 GUI를 시작합니다. Windows PC에서 실행 중인 Cygwin/XX 서버로 인해 GUI가 Windows PC에 표시됩니다.

좋아요. 이제 이상합니다. GUI가 처음 나타나는 위치에 GUI를 두면 모든 것이 정상입니다. GUI를 이동하면 풀다운 메뉴(드롭다운 콤보 상자 및 메뉴 표시줄 풀다운)가 더 이상 제대로 작동하지 않습니다. 그리고 풀다운 메뉴만 있습니다. 다른 모든 것(푸시버튼, 텍스트 필드 등)은 잘 작동합니다. GUI를 원래 위치로 다시 옮기면 모든 것이 잘 작동합니다. 마우스 커서를 클릭한 채 GUI가 처음 나타난 위치로 드래그하면(GUI를 이동한 위치는 그대로 유지) 풀다운 메뉴가 제대로 작동합니다.

처음에는 풀다운 메뉴를 초기화하는 방식에 문제가 있다고 생각했지만 더 이상은 잘 모르겠습니다. Windows <-> putty <-> linux 또는 Xwin 설정에 이상한 일이 벌어지고 있는지 궁금합니다.

이 문제를 해결할 수 없는 이유는 직장에서 이 동작을 재현할 수 없기 때문입니다. 불행하게도 우리는 오프사이트 시스템의 정확한 복제본을 가지고 있지 않습니다. 저는 XP에서 Debian Linux 시스템으로 이 GUI를 테스트/구축하고 있습니다.

이런 걸 본 사람이 있나요? 여기서 무슨 일이 일어나고 있는지에 대한 제안이 있습니까?

10억배 고마워

청구서

답변1

X 리디렉션을 통해 Java를 실행하는 것은 좋은 생각이 아니라고 생각합니다.

plinkWindows PC에 Java 프로그램을 넣고 이를 사용하여 명령을 시작하고 실행하는 것은 어떻습니까 ? Java 프로그램의 소스 코드가 있는 경우 랩핑하고 대체하여 명령줄 앞에 Runtime.getRuntime().exec()배치하는 클래스를 추가하는 것은 간단할 것입니다. plink그런 다음 모든 작업에 하나의 세션을 사용하도록 수업에 약간의 노력을 기울일 수 있습니다 plink. 그런 다음 동일한 인터페이스를 사용하여 다른 클래스를 만들 수도 있지만 plinkJava 프로그램을 Windows와 Linux 모두에서 실행할 수 있도록 추가하지는 않습니다.

답변2

-Dsun.java2d.xrender=trueJava 1.7에서는 원격 X 디스플레이를 사용할 때 사용할 수 있습니다 . 이는 Java가 X에서 실행 중임을 인식하게 합니다. 참조http://docs.oracle.com/javase/7/docs/technotes/guides/2d/flags.html

답변3

이는 Java의 그래픽 시스템인 Java 2D의 하드웨어 가속과 관련이 있을 수 있습니다.

Java 프로세스의 다음 명령줄 옵션을 추가하여 하드웨어 가속을 꺼보세요.

-Dsun.java2d.d3d=false

Java 2D 설정에 대한 전체 참조도 있습니다.여기. Direct 3D를 끄면 UI가 느려지지만 메뉴만 있고 애니메이션이 없는 간단한 UI의 경우에는 문제가 되지 않습니다.

관련 정보