2010-04-30 6 views
2

SWT UI를 사용하는 Java 프로젝트가 있는데 모든 Mac OS X 컴퓨터에 배포하는 데 문제가 있습니다. 프로그램 자체는 Eclipse에서 실행되거나 jar 파일에서 실행될 때 Windows에서 완벽하게 작동합니다. 맥에서 프로그램은 이클립스에서 잘 작동하지만 내가 jar 파일에서 실행하려고 할 때, 나는 다음과 같은 오류 얻을 :Mac에서 SWT 관련 문제

2010-04-30 13:33:04.564 java[17825:41b] *** _NSAutoreleaseNoPool(): Object 0x10b9b0 of class NSCFString autoreleased with no pool in place - just leaking 
Stack: (0x944acf4f 0x943b9432 0x678fb79 0x35a19b1 0x359ba7f) 
2010-04-30 13:33:04.566 java[17825:41b] *** _NSAutoreleaseNoPool(): Object 0x115ef0 of class NSCFNumber autoreleased with no pool in place - just leaking 
Stack: (0x944acf4f 0x943b9432 0x678a0b0 0x35a19b1 0x359ba7f) 
2010-04-30 13:33:04.567 java[17825:41b] *** _NSAutoreleaseNoPool(): Object 0x121000 of class NSCFString autoreleased with no pool in place - just leaking 
Stack: (0x944acf4f 0x943b9432 0x678fb79 0x35a19b1) 
2010-04-30 13:33:04.581 java[17825:41b] *** _NSAutoreleaseNoPool(): Object 0x123720 of class NSPathStore2 autoreleased with no pool in place - just leaking 
Stack: (0x944acf4f 0x943ba637 0x943c238f 0x943c1e8e 0x943c694b 0x678992e 0x35a19b1) 
2010-04-30 13:33:04.582 java[17825:41b] *** _NSAutoreleaseNoPool(): Object 0x12d660 of class NSPathStore2 autoreleased with no pool in place - just leaking 
Stack: (0x944acf4f 0x943ba637 0x943b9739 0x943c3eb2 0x943c6b22 0x678992e 0x35a19b1) 
... 
... 
... 

실제 오류가 훨씬 더 큰, 그리고 프로그램이 충돌 할 때까지 계속합니다.

올바른 swt.jar 파일을 사용하고 있고 -XstartOnFirstThread VM 인수를 사용하여 프로그램을 실행하려고했지만 여전히 행운을 얻지는 못했습니다.

아무에게도 해결책을 찾기 시작할 수있는 아이디어 나 제안이 있습니까?

감사합니다.

+0

내가 할 첫 번째 일은 Carbon과 Cocoa 버전의 Eclipse를 모두 시도해보고 차이가 있는지 확인하는 것입니다. –

+1

Mac OS X, Java 및 Eclipse의 어떤 버전이 관련되어 있습니까? – trashgod

답변

0

SWT 가비지 수집을하지 않습니다. 내 생각에 당신이 실행중인 코드가 이클립스 콘솔을 통해보고되는 운영 체제 메모리 누출을 일으키는 것입니다.

오류 메시지가 Java 오류 메시지는 아니지만 Obj-c 오류 메시지로 대신 표시됩니다. 여기

당신이 여기에 대한 자세한 내용을보실 수 있습니다 .. http://www.eclipse.org/articles/swt-design-2/swt-design-2.html

을하고 당신이 실제로보고있는의 Obj-C 오류에 대해 이야기 링크입니다. http://www.idevgames.com/forum/archive/index.php/t-7710.html

행운을 빈다!

4

응용 프로그램이 번들되었거나 명령 줄에서 실행하고 있습니까? 번들로 제공되는 경우 키를 true 값으로 Info.plist 파일의 Java 사전에 넣어야합니다. 번들로 제공되지 않으면 인수는 java -XstartOnFirstThread입니다. 예, 그들은 다릅니다. 예, 불행히도 성가시다.

+0

Mac OS X의 SWT에 StartOnFirstThread 옵션이 설정되어 있지 않다면 확실히 볼 수 있습니다. –

+0

조금 더 자세히 설명해 주시겠습니까? 비슷한 상황이 있습니다. 여기서 SWT 실행은 설명이있는 SWTException과 함께 실패합니다 : "잘못된 스레드 액세스". 나는 또한 메인 스레드와 관련이있을 것이라고 생각한다. – posdef

+0

맥에서의 SWT 연산은 항상 메인 스레드에서 일어나야하며 또한 디스플레이를 만든 동일한 스레드에 있어야한다. 이 예외는 다른 스레드에서 SWT를 호출하는 것처럼 들립니다. –