1

我正在编写一个基于 Java 的客户端,它将从使用 libvirt 的 Windows 执行。

  1. 得到 libvirt-java (http://libvirt.org/sources/java/libvirt-java-0.4.7.ta​​r.gz) 并构建一个 jar (没有参数的 Ant)
  2. 然后,根据http://libvirt.org/windows.html,使用“MSYS build script”构建一个dll</li>
  3. 得到 2 个文件 libvirt-0.dll 和 libqemu-0.dll

当我从http://libvirt.org/java.html运行示例示例(在 Eclipse 中)时,我收到以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'virt': %1 is not a valid Win32 application.

      at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:169)
      at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:242)
      at com.sun.jna.Library$Handler.<init>(Library.java:140)
      at com.sun.jna.Native.loadLibrary(Native.java:368)
      at com.sun.jna.Native.loadLibrary(Native.java:353)
      at org.libvirt.jna.Libvirt.<clinit>(Unknown Source)
      at org.libvirt.Connect.<clinit>(Unknown Source)
      at Main.main(Main.java:26)

还尝试在 Fedora 中代替第 2 步交叉编译——当我使用新的 dll 时出现相同的错误消息。

有人知道如何解决这个问题吗?

4

2 回答 2

0

您需要将jna.library.path系统属性值设置为 dll 所在的路径。

于 2012-02-17T06:29:34.953 回答
0

我不知道你是否已经解决了这个问题,但如果你还没有,你需要复制 libvirt-0.dll 并将其重命名为 libvirt.dll 以便 jna 可以加载它,并设置jna.library.path 指向包含此 dll 的目录。另外,我假设这是 32 位的,所以你还需要在 32b 上使用 Java 来编译和执行它

于 2013-07-15T10:31:51.783 回答