2011-03-09 4 views
11

나는 터미널을 통해 Java GUI 애플리케이션을 실행하려고하는 Ubuntu에있다. 실행하려고하면 HeadlessException이 발생합니다. 아래는 스택 추적입니다 : 리눅스 터미널을 통해 Java GUI 애플리케이션 실행하기

Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException 
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:173) 
    at java.awt.Window.<init>(Window.java:437) 
    at java.awt.Frame.<init>(Frame.java:419) 
    at java.awt.Frame.<init>(Frame.java:384) 
    at javax.swing.JFrame.<init>(JFrame.java:174) 
    at gui.ImageViewer.<init>(ImageViewer.java:34) 
    at displayrunner.DisplayRunner$1.run(DisplayRunner.java:15) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:647) 
    at java.awt.EventQueue.access$000(EventQueue.java:96) 
    at java.awt.EventQueue$1.run(EventQueue.java:608) 
    at java.awt.EventQueue$1.run(EventQueue.java:606) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:617) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:138) 

내가 응용 프로그램을 실행하기 전에 export DISPLAY=:0.0을 시도하지만 아무런 영향을 미치지 않습니다. Bash를 통해 GUI 애플리케이션을 어떻게 실행합니까?

답변

26

default-jre-headless 패키지 만 설치되어있는 것 같습니다. default-jre을 가지고 있는지 확인하십시오.

+0

나를 위해 일했습니다. 고마워요. 패키지는 우분투와 함께 있었지만 설치되지 않았습니다. "sudo apt-get install openjdk-6-jre" –

+1

도 나를 위해 일했습니다. 내 경우에는 나는 단지 기본 - jdk - headless 설치했다. 이 패키지는'갱신 이 – Chandru

+1

단지 발언을 설치 -java-alternatives'를 사용하여 컴퓨터에서 기본 Java를 선택하십시오. – Maxim

0

GUI가없는 경우 실행할 수 없습니다. 원격으로 실행 중입니까 (예 : SSH)?

그렇다면 원격 액세스에 사용중인 시스템을 살펴보십시오. 예를 들어, SSH의 경우 AllowX11Forwarding 설정 (SSH FAQ entry)을보고 싶습니다.

+0

원격이 아닙니다. 내 노트북에서 우분투를 실행하고 있습니다. –

+0

그런 다음 GUI가 실행 중이 아니면 GUI 응용 프로그램을 실행할 수 없습니다. –

+0

GUI가 있습니다. –

3

당신은 명령에 의해 우분투에서 응용 프로그램을 실행하는 경우 : 다음 오픈 JDK를 사용

java -jar MyJar.jar 

합니다. Sun JDK를 설치하고 다음과 같이 응용 프로그램을 실행하십시오.

/usr/java/jre1.6.0_22/bin/java -jar MyJar.jar 
+0

또는 (NNN은 버전 번호), 당신이 명령을 사용할 수 있습니다 '자바-NNN-오픈 JDK'라고 페도라/레드햇 배포판에 : 그래서, 나는 기본적으로 JDK – SiKing

5

예외가 있습니다. 헤드리스 설정을 false로 설정하려고 시도했지만 나에게 적합했습니다.

export JAVA_TOOL_OPTIONS='-Djava.awt.headless=false' 
+1

이것은 나를 위해 작동하지 않았다. –

관련 문제