dll 라이브러리를로드하는 jni 응용 프로그램과 함께 작업하고 있지만로드가 너무 오래 걸립니다. DLL이 경로에 있습니다. 관련 informat로,이 dll은 또한 경로에있는 다른 oracle dll에 의존합니다.DLL이 JNI 클래스에서 영원히로드됩니다.
System.loadLibrary("exmaple.dll");
로드가 종료되지 않는 이유는 무엇입니까?
dll 라이브러리를로드하는 jni 응용 프로그램과 함께 작업하고 있지만로드가 너무 오래 걸립니다. DLL이 경로에 있습니다. 관련 informat로,이 dll은 또한 경로에있는 다른 oracle dll에 의존합니다.DLL이 JNI 클래스에서 영원히로드됩니다.
System.loadLibrary("exmaple.dll");
로드가 종료되지 않는 이유는 무엇입니까?
몇 가지 테스트를했는데 스레드와 관련이있는 것 같습니다. loadLibrary 호출에 중단 점을 넣으면 다음 단계로 넘어 가지 않습니다. 내 응용 프로그램에서 다른 스레드를 다시 활성화하면 다음 단계로 넘어갑니다. 이 자바 버그 또는 일부 스레드 문제가 있는지 나는 알 수 없었다. JDK1.6.0_11을 사용하고 있습니다.
누군가 미래에 같은 문제가 발생하는 경우 스레드 문제가 있는지 확인하십시오.
먼저 JNI가로드 속도를 늦추는지 또는 DLL이 Windows에서 느리게로드되는지 확인해야 할 수 있습니다.
당신은 당신이 시험 방법은 존재하지 않는 오류가 발생합니다 명령을
rundll32 example.dll,testMethod
를 사용하여 DLL을로드 테스트 할 수 있습니다,하지만 DLL을로드하고 그것은 종속성을합니다. 시간을 정해서 얼마나 걸리는 지 볼 수 있습니다.
로드가 Rundll32로 느리게로드되는 경우 바이러스 검사기를 끄십시오. 또한 사용 가능한 메모리가 얼마나 있는지 확인하십시오.
JNI가 느려지는 경우 JNA으로 전환 해보세요.
rundll 테스트는 dll을 2 초 정도 빨리로드합니다. – hooray
오류 메시지가 있습니까? –
로드가 실제로 끝나지 않습니까? – mdma
몇 가지 테스트를했는데 스레드와 관련이있는 것 같습니다. loadLibrary 호출에 중단 점을 넣으면 다음 단계로 넘어 가지 않습니다. 내 응용 프로그램에서 다른 스레드를 다시 활성화하면 다음 단계로 넘어갑니다. 이 자바 버그 또는 일부 스레드 문제가 있는지 나는 알 수 없었다. JDK1.6.0_11을 사용하고 있습니다. – hooray