我在IntelliJ
ide中创建了一个简单的Java
程序。我用一些库,当我尝试将罐子导出为一个工件,并通过命令行我碰到下面的错误运行: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'选项添加它? –
你的程序似乎依赖于那些库,也就是说,当你尝试时,你必须[将它们添加到classpath](http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html)运行你的程序。 –