Java 의 SWT 관련 Component 들을 사용하다가 다음과 같이 Invalid thread access 라는 Error 가 발생하는 경우가 있다.
org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:4282) at org.eclipse.swt.SWT.error(SWT.java:4197) at org.eclipse.swt.SWT.error(SWT.java:4168) at org.eclipse.swt.widgets.Display.error(Display.java:1210) |
외부 Thread 에서 SWT Component 를 사용하려고 할 때 발생하는 에러로 SWT Component 는 UI 스레드에서만 Access 가능하다.
그렇기 때문에 이를 해결하려면 UI Thread 내에서 SWT Component 를 사용하도록 바꿔야 한다.
다음 메소드를 사용하여 UI Thread 내에서 Job 들을 수행할 수 있다.
Display.getDefault().syncExec(new Runnable() { @Override public void run() { // swt code } }); Display.getDefault().asyncExec(new Runnable() { @Override public void run() { // swt code } });
참고: http://stackoverflow.com/questions/5980316/invalid-thread-access-error-with-java-swt
'Java' 카테고리의 다른 글
[Java] Schema Validation 수행시 XSD 파일간의 파일관계가 복잡할경우 Resolver 이용하기 (0) | 2013.12.10 |
---|---|
UTF-8 인코딩시 BOM(Byte Order Mark) 문제 (2) | 2013.10.30 |
[Java] Web Resource Compressor Framework (0) | 2013.05.12 |
[Java] Eclipse 에서 Specified VM install not found 에러가 발생하는 경우 (0) | 2013.04.22 |
[Java] Java Code Convention (0) | 2013.02.18 |