【发布时间】:2017-01-06 12:39:44
【问题描述】:
我正在尝试在我的项目中使用 JNA 库。
我的情况如下:
我有一个显示相机输入的小程序。
如果我使用命令 run as applet 运行 Applet,我会得到正确的结果:
显示相机输入的小程序
如果我从构建路径中删除 jna.jar,它会给我带来预期的错误。
如果我重命名本机插件的目录,它会给我按预期的错误。
如果我尝试运行整个应用程序,我会收到错误:
GStreamer-WARNING **:无法在 30 多个 dll 上加载插件 C:/Users/aaa/Desktop/bbb/ccc/video/library/\windows64\plugins\libgstwavparse.dll
C:/Users/aaa/Desktop/bbb/ccc/video/library/\windows64\plugins\ 路径是如果重命名会导致小程序崩溃的路径(所以正确的路径),并且 jna.jar 和 JNA 使用的库被导入到每个涉及的项目中:启动应用程序的根项目和实例化显示小程序的相机的视图项目。
如前所述,我已经尝试过
System.setProperty("jna.library.path","C:/Users/aaa/Desktop/bbb/ccc/video/library/windows64/plugins/" );
等...以所有可能的形式引用正确的目录,但无济于事。
该库是 3rd 方库,实际上应该可以工作。
问题可能在于我目前完全不了解 JNA 和/或 Gstreamer,甚至是一些基础知识。
有什么解决方法吗?为什么小程序和实例化小程序的应用程序在引用 DLL...或 Gstreamer DLL...或 Processing 2.2.1 包含的 Gstreamer DLL 时工作方式不同?
【问题讨论】:
-
我个人不太理解你的问题,但这是完整的错误信息吗?
-
在尝试加载插件时出现警告后,我收到消息 java.lang.IllegalArgumentException: No such Gstreamer factory: appsink 女巫应该是无法加载插件的结果跨度>
-
如果您使用 eclipse,请查看this answer。导出后唯一的其他添加是使用
java.library.path(例如java -jar /path/to/your/processing-applet.jar -cp /path/to/exported-libs -Djava.library.path=/path/to/jni-jna-libs)明确告诉JVM它应该在哪里寻找Java本机库 -
java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-11 at java.lang.String.substring(Unknown Source) at processing.video.LibraryPath.get(Unknown Source) at processing.video .Video.buildWindowsPaths(Unknown Source) at processing.video.Video.initImpl(Unknown Source) at processing.video.Video.init(Unknown Source) at processing.video.Capture.list(Unknown Source) at processing.video.Capture .list(未知来源)
-
我现在从 cmd 运行可执行 jar 时遇到此错误,参数有什么变化?
标签: java eclipse dll processing jna