【问题标题】:axet/desktop: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/Platformaxet/desktop:线程“主”java.lang.NoClassDefFoundError 中的异常:com/sun/jna/Platform
【发布时间】:2016-06-08 14:16:40
【问题描述】:

我正在从存储库 https://github.com/axet/desktop/tree/master/java 构建项目。我正在尝试运行 DesktopTest 类。我这样做:

$ mvn package
$ cd target
$ java -cp ./desktop-2.3.3.jar:.:test-classes/ com.github.axet.desktop.DesktopTest
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/Platform
        at com.github.axet.desktop.Desktop.getDesktopFolders(Desktop.java:53)
        at com.github.axet.desktop.Desktop.getHomeFolder(Desktop.java:32)
        at com.github.axet.desktop.DesktopTest.main(DesktopTest.java:10)
Caused by: java.lang.ClassNotFoundException: com.sun.jna.Platform
        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)

我做错了什么?

Java 版本:

$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

【问题讨论】:

  • 问题在于您明确指定了类路径并排除了maven包含的所有依赖项的位置。 (一旦你手动解决了 JNA jar 问题,你最终会得到另一个 NoClassDefFoundError,直到你得到所有这些。)Maven 为你管理所有这些依赖项。

标签: java maven noclassdeffounderror


【解决方案1】:

您尚未下载该软件包的依赖项。它们列在pom.xml 文件中。但您不必担心手动操作。

你应该执行而不是简单地使用mvn package

$ mvn clean dependency:copy-dependencies package

这会将所有需要的 jar 复制到 target/dependency 目录中。将该目录添加到您的类路径中,它应该可以工作,例如,

$ java -cp ./desktop-2.3.3.jar:.:test-classes/:dependency/* com.github.axet.desktop.DesktopTest

【讨论】:

  • 为什么投反对票?请发表评论,以便我改进我的答案。 (除非你是之前投反对票的报复者。)
猜你喜欢
  • 1970-01-01
  • 2015-10-12
  • 2021-12-01
  • 1970-01-01
  • 2021-12-31
  • 2018-10-10
  • 2019-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多