我确实发现了很多关于此错误的信息,但不知何故,建议的解决方案都没有解决问题。
我正在尝试在 Eclipse 中的 Ubuntu 下为 libgphoto2 使用 JNA 绑定(在 Eclipse 上使用 Java 的经验适中,恐怕在 Ubuntu 上没有任何经验)。我想使用的有问题的绑定在这里: http ://angryelectron.com/projects/libgphoto2-jna/
我按照该页面上描述的步骤,制作了一个简单的测试客户端,但由于上述错误而失败。所以我减少了测试客户端,直到我唯一尝试做的就是实例化一个 GPhoto2 对象,这仍然产生了错误。测试客户端如下所示:
import com.angryelectron.gphoto2.*;
public class test_class
{
public static void main(String[] args)
{
GPhoto2 cam = new GPhoto2();
}
}
我得到的错误占用了更多的空间:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/Structure
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at test_class.main(test_class.java:12)
Caused by: java.lang.ClassNotFoundException: com.sun.jna.Structure
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 13 more
libgphoto2 本身已安装,它从命令行运行,我什至有开发头文件并且能够从 python 调用 GPhoto2 函数,所以问题不能在那里定位。
然而,在 Eclipse 中查看 .class 文件时,它们没有任何定义。所以我认为这可能是问题所在,尤其是在使用 ant 构建整个东西时出现错误(尽管 .jar 已成功导出,但从我可以看出错误仅与文档的生成有关)。所以我将源代码加载到eclipse中并自己构建了.jar。在这种情况下,Eclipse 表示在构建过程中出现了警告(尽管没有错误),但没有向我显示实际的警告。如果有人能告诉我构建日志到底去了哪里,那可能已经有所帮助。我到处搜索它都没有成功,如果我在 Eclipse 中单击“详细信息”,它只会告诉我警告发生在哪里,而不是它们是什么。
尽管如此,警告不一定是毁灭性的,所以我将生成的 Jar 导入到上述客户端中。我检查了 .class 文件,这次它们包含了所有代码。但是我仍然得到完全相同的错误列表(是的,我非常确定旧库已从类路径中删除并添加了新库。我重复了几次该过程,以防万一)。
由于我没有构建 jar 的经验,所以我制作了一个小的 helloworld jar,只是为了看看我是否可以从另一个程序中调用它,或者我是否会遇到类似的错误。它工作顺利。我什至尝试通过使用各种选项将其导出来故意重现该问题,但它仍然有效。我尝试使用在实验期间有效的设置重新导出我实际需要的库,但它们仍然无法运行。我现在几乎被困住了。任何帮助我解决问题的提示将不胜感激。