我在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)運行你的程序。 –