java - 如何解决JNA这个问题?

标签 java windows

我有使用 JNA 并获取音频和视频的应用程序。它可以在我的 Linux 机器上运行。但是当我在 Windows 中测试它时。它只是从来没有工作过。因为我还在学习,我会感谢你关于如何修复它的建议,我已经花了几天和几周的时间来解决它,但只是不明白为什么 JAVA 不能简单地工作,它是一个跨平台。为什么还需要系统路径或其他配置。

我现在完全迷失了,为什么它在 Linux 中工作而在 Windows XP 中不起作用?那我该如何运行它呢?

Inside the lib direcotry i have my JNA and Audio libraries.
C:\Documents and Settings\test\Desktop\test>dir
 Volume in drive C has no label.
 Volume Serial Number is 680F-0963

 Directory of C:\Documents and Settings\test\Desktop\test

19/12/2010  22:09    <DIR>          .
19/12/2010  22:09    <DIR>          ..
19/12/2010  22:09            51.791 Audio.jar
19/12/2010  22:09    <DIR>          lib
               1 File(s)         51.791 bytes
               3 Dir(s)     487.002.112 bytes free



Now trying to run Audio.jar, gets Fail 1:

C:\Documents and Settings\test\Desktop\test>java -Djava.library.path=~/jni -jar
Audio.jar
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load librar
y gstreamer-0.10
        at org.gstreamer.lowlevel.GNative.loadWin32Library(GNative.java:83)
        at org.gstreamer.lowlevel.GNative.loadLibrary(GNative.java:43)
        at org.gstreamer.lowlevel.GstNative.load(GstNative.java:42)
        at org.gstreamer.lowlevel.GstNative.load(GstNative.java:39)
        at org.gstreamer.Gst.<clinit>(Gst.java:59)
        at video.MyVideo.simpletest(MyVideo.java:31)
        at sipphone.MainApplet.run(MainApplet.java:58)
        at sipphone.MainApplet.main(MainApplet.java:43)


Fail 2:
C:\Documents and Settings\test\Desktop\test>java -Djna.library.path=. -jar Audio
.jar
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load librar
y gstreamer-0.10
        at org.gstreamer.lowlevel.GNative.loadWin32Library(GNative.java:83)
        at org.gstreamer.lowlevel.GNative.loadLibrary(GNative.java:43)
        at org.gstreamer.lowlevel.GstNative.load(GstNative.java:42)
        at org.gstreamer.lowlevel.GstNative.load(GstNative.java:39)
        at org.gstreamer.Gst.<clinit>(Gst.java:59)
        at video.MyVideo.simpletest(MyVideo.java:31)
        at sipphone.MainApplet.run(MainApplet.java:58)
        at sipphone.MainApplet.main(MainApplet.java:43)

最佳答案

您需要安装 DLL,或者至少像其他人指出的那样安装在您的 JNA 库路径中。

它确实增加了对 Windows 的额外依赖。这将是对 Linux 的额外依赖,但 gstreamer 是由您的发行版预安装的。当我在 Java 中使用 USB 端口制作一些东西时,我遇到了同样的问题。

据我所知,避免 DLL 的唯一解决方案是拥有可以在 Windows 上调用的代码的第二个版本,该代码仅使用 Win32 内容(即 Windows 附带的内容),但这将是一项非常艰巨的任务.

关于java - 如何解决JNA这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4492610/

相关文章:

java - 如何将字符串日期格式解析为仅时间

java - Selenium 测试 Java Maven 依赖关系

java - Elasticsearch 在 Tomcat 7 上使用 javax/servlet/FilterConfig 导致 java.lang.LinkageError

windows - 转换后的 UWP 应用程序无法在 Xbox One 上运行

c - 根据我的要求使按钮看起来禁用/灰色

java - Kie Workbench 从 session 中删除现有事实

java - 在Realmchangelistener中调用listview的notifydatasetchanged()好不好?

windows - 使用 Putty ssh 打开 .pdf?

windows - 将多线程网络服务器从UNIX移植到Windows

c - 在具有多个输入值的 C 中使用 atof() 函数