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)
Код Java извлекает "com4j-amd64.dll" рядом с банкой.
3 ответа
Последняя версия была только что выпущена:
http://kohsuke.org/2012/04/27/com4j-updates/
https://github.com/kohsuke/com4j/downloads
Использование этого решило все мои проблемы.
У вас есть два варианта:
- Загрузите и используйте полную последнюю версию (находится здесь: https://github.com/kohsuke/com4j/downloads)
- Извлеките последнюю версию com4j-amd64.dll из самой последней версии
- Загрузите последнюю версию (находится здесь: https://github.com/kohsuke/com4j/downloads).
- Откройте com4j.jar с вашей любимой утилитой zip (читайте 7zip)
- Извлеките com4j.jar\com4j\com4j-x64.dll в базовый каталог вашего приложения
- (необязательно) Зарегистрируйте dll используя
REGSVR32 <path to dll>\com4j-x64.dll
Сначала у меня был похожий результат. Я обнаружил, что com4j-amd64.dll, который производится com4j, пуст. Для этого нужно извлечь файл из jar-файла com4j и поместить его в соответствующий каталог вручную. Com4j не будет автоматически производить файл, так как он уже там. Так что проверьте, если файл пуст в качестве первого шага -Карл