com4j on Windows 64 bit

17,237

Solution 1

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.

Solution 2

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
Share:
17,237
Kong
Author by

Kong

I'm a big hairy gorilla.

Updated on June 04, 2022

Comments

  • Kong
    Kong almost 2 years

    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.

    • Kong
      Kong almost 12 years
      And I'm running with an Intel processor, is it funny the dll is "amd64"?
    • technomage
      technomage almost 12 years
      No, it's not funny. That's just a common way of referring to the 64-bit architecture intel uses (as does amd).