[英]Java jar cannot find class on run
我已經在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
編譯和運行程序效果很好。
我的項目使用以下build.gradle
配置為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->從具有依賴項的模塊->添加了主源文件夾和庫文件中的所有庫,添加了清單和主類並導出了jar。
我試圖解決這幾天,但我不明白為什么它找不到class
。
我認為您的觀點存在誤解。
您的項目包含兩個重要部分:
當您在IDE中運行項目並且項目設置正確時, 這兩件事都在類路徑中。
但是,當您為項目創建JAR時 ,它很大程度上取決於您的設置。 含義:“默認”是為您的項目創建的JAR 僅包含“ 1”。 部分。 因為您不希望所有外部類都首先添加到“您的” JAR中。
因此,要解決此問題:當您想從命令行上的JAR運行程序時,那么您還需要所有這些外部 JAR都位於類路徑中! 因為,如前所述:要運行,您需要在類路徑中同時包含“ 1”和“ 2”部分。
結論:您應該檢查gradle放入它為您創建的JAR中。 我很確定:JAR僅包含“ 1”。
(為了記錄,這很好。可以將所有內容捆綁到一個jar中,但這需要您的工作)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.