2012-09-11 2 views
1

JNI를 사용하여 DLL을 사용하는 Java 응용 프로그램을 개발 중입니다.Eclipse에서 Java 애플리케이션을 실행하는 것이 직접 실행하는 것과 어떻게 다릅니 까?

dll은 아직 개발 중이므로 일부 메모리 문제가있는 것으로 보입니다.

이클립스 실행 대화 상자를 사용하여 응용 프로그램을 실행할 때 응용 프로그램이 매우 불안정하고 매우 충돌 할 수 있습니다. 이클립스 밖에서 같은 응용 프로그램을 시작할 때 응용 프로그램이 훨씬 안정적으로 실행됩니다. 여전히 크래시가 있지만 상당히 적습니다.

그리고 두 개의 추가 질문 :

응용 프로그램을 디버그로 실행되는 차이점은 무엇입니까?

dll이 할당하는 메모리는 가상 시스템의 메모리가 아닙니다. 따라서 가상 컴퓨터의 메모리에 영향을주는 매개 변수 (예 : -Xmx)는 dll에 대한 메모리 할당에 영향을 미치지 않습니다. 이 진술이 맞습니까? 답변

답변

1

이 완전히 귀하의 질문에 대답하지 않지만, 자바에서 네이티브 코드를 실행할 때 내가 했어 문제와 유사한 소리에 미리

감사합니다.

응용 프로그램을 한 방향으로 실행하는 것이 다른 것보다 안정적이면 시스템에 둘 이상의 JVM이 설치되어 있고 Eclipse가 명령 줄에서 사용하는 것과 다른 것을 사용하고있을 가능성이 있습니다.

+0

내가 allready 생각 , 너무. 하지만 JDK 1.6.35에서 실행되는 것을 확인했습니다. – hami

0

'불안정'에 대해 자세히 설명해주세요. 어떤 종류의 오류가 발생합니까?

codebox에서 제안한 것처럼 실행중인 JVM과 동일한 버전인지 확인해야합니다.

당신은 시작에 인쇄 JRE 정보하여이 작업을 수행 할 수 있습니다 :

System.out.println("Vendor: " + System.getProperty("java.vendor") + ", Version: " + System.getProperty("java.version")); 

을 이클립스에서 JRE 버전이 이동 변경하려면 : 창 -> 환경 설정 -> 자바 -> 설치된 JRE를

+0

불안정 함은 전체 응용 프로그램이 충돌 함을 의미합니다. Java Runtime Environment에서 치명적인 오류가 감지되었다는 메시지가 나타납니다. 원인이 다릅니다 (EXCEPTION_ACCESS_VIOLATION UNCAUGHT_EXCEPTION). 그러나 이것은 문제가 아니며, dll은 오류가 있습니다. 문제는 Eclipse가 직접 시작과 다른 응용 프로그램을 시작합니까? (Java 버전은 동일합니다.) – hami

관련 문제