Windows 64位上的com4j

我已经下载了最新的com4jjar子,我正试图通过他们最简单的例子。

我使用64位Windows 7并使用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.(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代码提取jar旁边的“com4j-amd64.dll”。

最新版本刚刚发布:

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

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

用这个解决了我所有的问题。

你有两个选择:

  1. 下载并使用最新版本(位于: https : //github.com/kohsuke/com4j/downloads )
  2. 从最新版本中提取最新的com4j-amd64.dll
    • 下载最新版本(位于: https : //github.com/kohsuke/com4j/downloads )。
    • 使用您喜欢的zip实用程序打开com4j.jar(阅读7zip)
    • 将com4j.jar \ com4j \ com4j-x64.dll解压缩到应用程序的基本目录
    • (可选)使用REGSVR32 \com4j-x64.dll注册dll

我起初有类似的结果。 我发现com4j生成的com4j-amd64.dll为空。 解决方法是从com4j jar文件中提取文件,并通过手动操作将其放入相关目录中。 然后Com4j将不会自动生成该文件,因为它已经存在。 因此,检查文件是否为空,作为第一步-Carl