java - 导出到 JAR 时出现 LTI-Civil Project 奇怪的错误

标签 java native webcam

大纲: 1. 我的项目使用 LTI-CIVIL 来捕获网络摄像头。 2. 在Eclipse 中,一切正常。 3. 由于 LTI_CIVIL 使用 native 库访问硬件,我选择使用 JarClassLoader(此处提供信息 http://www.jdotsoft.com/JarClassLoader.php#download),它允许在运行时将 native 库解压到临时文件夹中。一切都很好,我什至可以访问网络摄像头捕获流,直到...... 我尝试使用从网络摄像头提交的 com.lti.civil.NativeVideoFormat 类型的图像。问题是,当从可执行 jar 运行时,它说这个类显然没有实现 com.lti.civl.VideoFormat。我什至打印出了在 eclipse 上运行的代码的 getClass() 并验证了网络摄像头图像都是同一类型。但是,当我打印出 if the getClass() instanceof NativeVideoFormat 时,在 eclipse 版本中打印为 true,但在 jar 版本中打印为 false。

有趣的是,这个问题以前出现过,但是没有解决办法: https://forums.oracle.com/forums/thread.jspa?messageID=10637883&#10637883

谢谢你的帮助

最佳答案

您说“它显然确实”实现了该接口(interface),但我认为问题在于它实际上 没有实现。我认为您有该接口(interface)类型的多个“化身”。

运行时类(或接口(interface))的真实类型取决于 Class 对象的标识:

  • 如果 clazz == clazz2 那么它们代表相同的类型。 (Class 上的 equals(Object) 方法测试相同的条件...)
  • 否则他们不会,不考虑类名。

看起来您的应用程序对类加载器的使用导致一个 .class 文件在两个不同的类加载器中被加载两次。我怀疑您的 JarClassLoader 实例没有正确的父类加载器。

关于java - 导出到 JAR 时出现 LTI-Civil Project 奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13224422/

相关文章:

java - JNI 中的 UnsatisfiedLinkError

android - 将 native 库添加到 APK

winapi - 如何在 Windows 10 中创建虚拟网络摄像头?

c# - 将网络摄像头从客户端流式传输到服务器 C# 的有效方法

opencv - 查找从相机到已知大小物体的距离

RIM 使用的 Java 版本

java - 如何调用 Linux shell 并为其设置 PATH?

java - 字符串问题

java - 如何更改Windows桌面背景

java - 实现像JConsole这样的程序需要什么