com4j on Windows 64 bit

谁都会走 提交于 2019-12-03 21:10:19

问题


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.


回答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.




回答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



回答3:


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



来源:https://stackoverflow.com/questions/10342765/com4j-on-windows-64-bit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!