0
package com.Toby.Trains;
import com.Toby.StationManager;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Trains {
public static void main(String[] args) {
Gson gson = new Gson();
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new FileReader("routes.json"));
StationManager routes = gson.fromJson(bufferedReader, StationManager.class);
if (routes != null) {
System.out.print(routes);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
我想要使用Gson,這需要我把Gson jar作爲依賴使用它的類。IntelliJ - 包括依賴罐當建一個罐子
爲此,我已將其設置爲模塊下項目設置的依賴項。這使我可以導入正確的類,以便編譯時不會出錯。
這使得在外部庫的jar表演。
當我嘗試在終端運行編譯罐子,它給java.lang.NoClassDefFoundError
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/Gson
at com.Toby.Trains.Trains.main(Trains.java:16)
Caused by: java.lang.ClassNotFoundException: com.google.gson.Gson
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)
... 1 more
它看起來像沒有被添加我的外部庫。我如何用正確的依賴運行我的jar?
謝謝!
幫你一個忙,並使用Maven或Gradle等構建系統。所有這些都與Idea很好地結合在一起,他們也都支持創建一個「胖JAR」,它不僅包含您的應用程序,還包含您使用的所有庫。在Maven中,這將通過[maven-shade-plugin]完成(https://maven.apache.org/plugins/maven-shade-plugin/) –
請[看這個答案](http:// stackoverflow。 com/a/42200519/104891)。 – CrazyCoder