Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NoClassDefFoundError(java、Eclipse、Fuse JNA、Ubuntu)_Java_Eclipse_Ubuntu_Filesystems_Fuse - Fatal编程技术网

NoClassDefFoundError(java、Eclipse、Fuse JNA、Ubuntu)

NoClassDefFoundError(java、Eclipse、Fuse JNA、Ubuntu),java,eclipse,ubuntu,filesystems,fuse,Java,Eclipse,Ubuntu,Filesystems,Fuse,通过eclipse,我试图运行fuse jna的内置文件系统示例(HelloFS.java),但它给出了java.lang.NoClassDefFoundError 我的源项目位于/home/syed/workspace/HelloFS中 fuse-jna类文件位于home/syed/Downloads/fuse-jna-master/build/classes/main/net/fusejna中 在eclipse中,我通过buildpath和环境文件中的jre路径添加了类文件夹。我把快照附在下

通过eclipse,我试图运行fuse jna的内置文件系统示例(HelloFS.java),但它给出了java.lang.NoClassDefFoundError

我的源项目位于/home/syed/workspace/HelloFS中

fuse-jna类文件位于home/syed/Downloads/fuse-jna-master/build/classes/main/net/fusejna中

在eclipse中,我通过buildpath和环境文件中的jre路径添加了类文件夹。我把快照附在下面

请帮助我在eclipse中运行这个示例

错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/Structure
    at net.fusejna.FuseFilesystem.mount(FuseFilesystem.java:545)
    at net.fusejna.FuseFilesystem.mount(FuseFilesystem.java:550)
    at HelloFS.main(HelloFS.java:22)
Caused by: java.lang.ClassNotFoundException: com.sun.jna.Structure
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 3 more
下面是内置示例文件系统的代码(没有红色下划线,我认为这意味着eclipse构建路径输入正确):

这是fuse jna类路径

我添加了/main文件夹

========================================================

@维克多K.谢谢你的帮助

通过下载com.sun.jna»jna并将其添加到referece库,可以修复上述错误

但现在它向我显示了新的错误

Dec 28, 2013 1:18:25 PM HelloFS getName
INFO: Method succeeded. Result: null
Dec 28, 2013 1:18:25 PM HelloFS getOptions
INFO: Method succeeded. Result: null
Exception in thread "main" java.lang.NoSuchMethodError: com.sun.jna.Platform.getOSType()I
at net.fusejna.Platform.init(Platform.java:39)
at net.fusejna.Platform.fuse(Platform.java:26)
at net.fusejna.FuseJna.init(FuseJna.java:113)
at net.fusejna.FuseJna.mount(FuseJna.java:172)
at net.fusejna.FuseFilesystem.mount(FuseFilesystem.java:545)
at net.fusejna.FuseFilesystem.mount(FuseFilesystem.java:550)
at HelloFS.main(HelloFS.java:22)
=======================================================

我下载的那个不适合露营我想

在保险丝jna的临时文件夹中

/home/syed/Downloads/fuse jna master/build/tmp/expandedArchives/jna-3.5.2.jar_r4n26u14up0smlb84ivcvfnke/

有jna3.5.2类,我把它导入了libraray,现在它工作正常了


我的问题解决了。非常感谢。

问题不在Fuse JNA库中。Fuse JNA库显然依赖于JNA库(可以在公共maven存储库中找到)。您需要将此库作为依赖项添加到项目中。您可以看到,在项目的引用库中没有com.sun.jna包可用

一般来说,如果您想要使用包A(在您的案例中是Fuse JNA),并且包A依赖于包B(在您的案例中是JNA),那么您必须自己将JNA包作为依赖项添加到项目中。一般来说,很难找出您想要使用的包的所有必需依赖项是什么——因此许多项目都在使用maven(或任何类似gradle的替代方案)。如果要了解更多信息,请选中此项:。我强烈建议使用依赖项解析工具(比如maven)而不是手动解析依赖项


另一种方法是下载一个具有所有依赖项的FuseJAR——如果您认为它是您需要的唯一库的话。然而,如果您稍后添加其他依赖项,添加带有依赖项的jar可能会导致一场大灾难。这可能会导致依赖项冲突,这很难找到问题。

Hmmm我下载的一个不可营地我想,在fuse jna/home/syed/Downloads/fuse jna master/build/tmp/expandedArchives/jna-3.5.2.jar_r4n26u14up0smlb84ivcvfnke/的临时文件夹中,有jna3.5.2类,我将其导入了libraray,现在它可以正常工作了。我的问题解决了。谢谢。
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
    JAVA_HOME="/usr/lib/jvm/java-6-openjdk-i386"
Dec 28, 2013 1:18:25 PM HelloFS getName
INFO: Method succeeded. Result: null
Dec 28, 2013 1:18:25 PM HelloFS getOptions
INFO: Method succeeded. Result: null
Exception in thread "main" java.lang.NoSuchMethodError: com.sun.jna.Platform.getOSType()I
at net.fusejna.Platform.init(Platform.java:39)
at net.fusejna.Platform.fuse(Platform.java:26)
at net.fusejna.FuseJna.init(FuseJna.java:113)
at net.fusejna.FuseJna.mount(FuseJna.java:172)
at net.fusejna.FuseFilesystem.mount(FuseFilesystem.java:545)
at net.fusejna.FuseFilesystem.mount(FuseFilesystem.java:550)
at HelloFS.main(HelloFS.java:22)