Java JNA本机库调用NoClassDefFoundError

Java JNA本机库调用NoClassDefFoundError,java,java-native-interface,native,classnotfoundexception,jna,Java,Java Native Interface,Native,Classnotfoundexception,Jna,我想在Windows中使用Java将一个文件放入回收站。以便用户能够恢复它 因此,我使用访问本机Windows函数的库(jna-platform-4.2.2.jar) 我的代码: public static boolean moveToTrashBin(File file){ FileUtils fileUtils = FileUtils.getInstance(); if(fileUtils.hasTrash()){ // returns true tr

我想在Windows中使用Java将一个文件放入回收站。以便用户能够恢复它

因此,我使用访问本机Windows函数的库(jna-platform-4.2.2.jar)

我的代码:

public static boolean moveToTrashBin(File file){

    FileUtils fileUtils = FileUtils.getInstance();

    if(fileUtils.hasTrash()){   // returns true
        try{
            fileUtils.moveToTrash(new File[]{file});   // throws Exception
            return true;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    return false;
}
没有编译时错误,但当我尝试运行它时,fileUtils.moveToTrash(..)行抛出以下NoClassDefFoundError和ClassNotFoundExection:

线程“AWT-EventQueue-0”中出现异常java.lang.NoClassDefFoundError:com/sun/jna/win32/StdCallLibrary 位于java.lang.ClassLoader.defineClass1(本机方法) 位于java.lang.ClassLoader.defineClass(ClassLoader.java:760) 位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 位于java.net.URLClassLoader.defineClass(URLClassLoader.java:455) 在java.net.URLClassLoader.access$100(URLClassLoader.java:73) 在java.net.URLClassLoader$1.run(URLClassLoader.java:367) 在java.net.URLClassLoader$1.run(URLClassLoader.java:361) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:360) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) 位于java.lang.ClassLoader.defineClass1(本机方法) 位于java.lang.ClassLoader.defineClass(ClassLoader.java:760) 位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 位于java.net.URLClassLoader.defineClass(URLClassLoader.java:455) 在java.net.URLClassLoader.access$100(URLClassLoader.java:73) 在java.net.URLClassLoader$1.run(URLClassLoader.java:367) 在java.net.URLClassLoader$1.run(URLClassLoader.java:361) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:360) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) 位于com.sun.jna.platform.win32.W32FileUtils.moveToTrash(W32FileUtils.java:28) 位于DropboxFix.Gui.Tools.moveToTrashBin(Tools.java:21) 位于DropboxFix.Gui.Gui.btnDeleteFoundOnClick(Gui.java:208) 在DropboxFix.Gui.Gui.access$1600(Gui.java:34) 在DropboxFix.Gui.Gui$6.actionPerformed(Gui.java:357) 在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 位于javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) 在javax.swing.DefaultButtonModel.fireActionPerformed上(DefaultButtonModel.java:402) 在javax.swing.DefaultButtonModel.setPressed中(DefaultButtonModel.java:259) 在javax.swing.plaf.basic.BasicButtonListener.MouseRelease(BasicButtonListener.java:252) 在java.awt.AWTEventMulticaster.mousererelease(AWTEventMulticaster.java:289) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6525) 位于javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3322) 位于java.awt.Component.processEvent(Component.java:6290) 位于java.awt.Container.processEvent(Container.java:2234) 位于java.awt.Component.dispatchEventImpl(Component.java:4881) 位于java.awt.Container.dispatchEventImpl(Container.java:2292) 位于java.awt.Component.dispatchEvent(Component.java:4703) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4898) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4533) 位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) 位于java.awt.Container.dispatchEventImpl(Container.java:2278) 位于java.awt.Window.dispatchEventImpl(Window.java:2739) 位于java.awt.Component.dispatchEvent(Component.java:4703) 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751) 在java.awt.EventQueue.access$500(EventQueue.java:97) 在java.awt.EventQueue$3.run(EventQueue.java:702) 在java.awt.EventQueue$3.run(EventQueue.java:696) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) 在java.awt.EventQueue$4.run(EventQueue.java:724) 在java.awt.EventQueue$4.run(EventQueue.java:722) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:721) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 原因:java.lang.ClassNotFoundException:com.sun.jna.win32.StdCallLibrary 在java.net.URLClassLoader$1.run(URLClassLoader.java:372) 在java.net.URLClassLoader$1.run(URLClassLoader.java:361) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:360) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 66多

我使用IntelliJ作为IDE,并在“项目结构->库->添加”下添加了库


如何修复此问题?

我发现了错误,只需添加第二个库