【发布时间】:2017-01-28 00:08:11
【问题描述】:
我在IntelliJ ide 中创建了一个简单的Java 程序。我使用了几个库,当我尝试将 jar 导出为工件并从命令行运行它时,出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureCallback
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)
at java.lang.Class.getMethod0(Class.java:2856)
at java.lang.Class.getMethod(Class.java:1668)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: com.google.common.util.concurrent.FutureCallback
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:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 6 more
在IntelliJ 中编译和运行程序效果很好。
我的项目配置为gradle 项目,带有以下build.gradle:
group 'marianpavel.com'
version '1.0'
apply plugin: 'java'
sourceCompatibility = 1.5
repositories {
mavenCentral()
maven {
url "http://repo.bastian-oppermann.de"
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile 'de.btobastian.javacord:javacord:2.0.11'
compile 'ch.qos.logback:logback-classic:1.0.13'
compile 'de.btobastian.sdcf4j:sdcf4j-core:1.0.2'
compile 'de.btobastian.sdcf4j:sdcf4j-javacord:1.0.2'
compile 'org.jsoup:jsoup:1.9.2'
}
我已按如下方式导出 jar:项目结构 -> 工件 -> Jar -> 从具有依赖项的模块 -> 添加主源文件夹和库文件中的所有库,添加清单和主类并导出罐子。
我试图解决这个问题好几天了,但我不明白为什么它找不到 class。
【问题讨论】:
-
堆栈跟踪表明您的类路径中没有番石榴。您是否尝试在运行时使用
-classpath选项添加它? -
您的程序似乎依赖于这些库,即当您尝试运行程序时,您必须add them to classpath。
标签: java intellij-idea jar