com4j on Windows 64 bit

2019-02-14 13:20发布

I've downloaded the latest com4j jars and I'm trying to run through the most simple of their examples.

I'm on Windows 7 64 bit and using a 64 bit JVM.

When I run the command (from the com4j tutorial):

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

I get:

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)

The java code extracts "com4j-amd64.dll" next to the jar.

3条回答
Lonely孤独者°
2楼-- · 2019-02-14 14:07

You have two options:

  1. Download and use the full latest version (located here: https://github.com/kohsuke/com4j/downloads)
  2. Extract the latest com4j-amd64.dll from the most recent version
    • Download the latest version (located here: https://github.com/kohsuke/com4j/downloads).
    • Open up the com4j.jar with your favorite zip utility (read 7zip)
    • Extract com4j.jar\com4j\com4j-x64.dll to the base directory of your application
    • (optional) Register the dll using REGSVR32 <path to dll>\com4j-x64.dll
查看更多
Fickle 薄情
3楼-- · 2019-02-14 14:13

The latest version has just been released:

http://kohsuke.org/2012/04/27/com4j-updates/

https://github.com/kohsuke/com4j/downloads

Using this one solved all my problems.

查看更多
该账号已被封号
4楼-- · 2019-02-14 14:16

I had a similar result at first. I found the com4j-amd64.dll that is produced by com4j is empty. The remedy is to extract the file from the com4j jar file, and put it in the relevant directory by manual action. Com4j will then not auto-produce the file since it is already there. So check if the file is empty as a first step -Carl

查看更多
登录 后发表回答