【问题标题】:Utilizing jna library in application rather than applet在应用程序中使用 jna 库而不是 applet
【发布时间】: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


【解决方案1】:

好吧,我设法让它以这种方式工作:如果我直接在 View 项目中编写一个 main 并将小程序添加到面板中,它现在可以工作......这样就解决了一些问题(小程序甚至在之前就在面板中无论如何)...如果在根项目下运行,则与以前相同的完全相同的虚拟主程序会发出警告唉:加载插件失败:“正确路径”

如前所述,我有一个根项目和一个视图项目(坦率地说是 N Vproject),视频库包含在 VProject 中,dll 位于项目资源下。从主项目运行应用程序(如不同的系统变量)是否有可能最终导致问题? 只是不知道我之前添加和删除的问题(和组合)所有可以添加到与 jna 平台和 jna-using-video 库相关的两个项目。

在这种情况下,我真的很关心解耦,因为我在写一个框架,这是一个主要的限制。有什么见解吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 2014-11-16
    • 1970-01-01
    相关资源
    最近更新 更多