2012-04-26 2 views
4

나는 최신 com4j 항아리를 다운로드했으며 가장 간단한 예제를 실행하려고합니다.Windows 64 비트에서 com4j

저는 Windows 7 64 비트이고 64 비트 JVM을 사용하고 있습니다. 내가합니다 (com4j 튜토리얼에서) 명령을 실행하면

는 :

java -jar tlbimp.jar -o wsh -p test.wsh %WINDIR%\system32\wshom.ocx 

를 내가 얻을 :

Exception in thread "main" java.lang.UnsatisfiedLinkError: com4j-amd64.dll: %1 is 
not a valid Win32 application 
     at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
     at java.lang.ClassLoader.loadLibrary0(Unknown Source) 
     at java.lang.ClassLoader.loadLibrary(Unknown Source) 
     at java.lang.Runtime.load0(Unknown Source) 
     at java.lang.System.load(Unknown Source) 
     at com4j.COM4J.loadNativeLibrary(COM4J.java:569) 
     at com4j.COM4J.<clinit>(COM4J.java:522) 
     at com4j.tlbimp.driver.Lib.getLibid(Lib.java:90) 
     at com4j.tlbimp.driver.Driver.addLib(Driver.java:38) 
     at com4j.tlbimp.driver.Main.doMain(Main.java:123) 
     at com4j.tlbimp.driver.Main.main(Main.java:56) 
Exception in thread "Com4J shutdown hook" java.lang.NoClassDefFoundError: Could 
not initialize class com4j.COM4J 
     at com4j.COM4J$3.run(COM4J.java:476) 

옆에 항아리에 자바 코드를 추출 "com4j-amd64.dll".

+0

그리고 나는 인텔 프로세서, dll이 "amd64"인 것은 재미 있니? – Kong

+0

아니, 재미 없어. 이는 Intel과 마찬가지로 64 비트 아키텍처를 사용하는 일반적인 방법입니다 (amd와 동일). – technomage

답변

0

나는 처음에는 비슷한 결과를 보였습니다. com4j에 의해 생성 된 com4j-amd64.dll이 비어 있음을 발견했습니다. 해결 방법은 com4j jar 파일에서 파일을 추출하여 수동 작업으로 관련 디렉토리에 저장하는 것입니다. Com4j는 파일이 이미 있기 때문에 자동 생성하지 않습니다. 그래서 파일이 최신 버전이 방금 출시되었습니다

2

당신은 두 가지 옵션이 있습니다

  1. 를 다운로드하고 (여기에 있습니다 : https://github.com/kohsuke/com4j/downloads) 전체 최신 버전을 사용하는 최신 버전
    • 다운로드에서 최신 com4j-amd64.dll을 추출
    • 을 최신 버전 (여기에 위치 : https://github.com/kohsuke/com4j/downloads).
    • 는 (7zip과 읽기) 좋아하는 압축 유틸리티를 사용하여 com4j.jar을 열고
    • 추출 com4j.jar \ com4j \ 응용 프로그램의 기본 디렉토리에 com4j - x64.dll
    • 사용하여 DLL을 등록 (선택 사항) REGSVR32 <path to dll>\com4j-x64.dll
0

당신이 IDE를 사용하는 경우, 당신은 또한 64 비트 시스템에서 32 비트 JRE를 설치하고 해당 환경에서 실행할 수있는 다른 32 비트 JRE (bin 폴더)로 JRE 라이브러리 (경로를 구축) 포인트