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