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作为依赖来使用它的类。
为此,我将其设置为模块下项目设置中的依赖项。这允许我导入正确的类,以便编译时没有错误。
这使jar显示在外部库下。
当我尝试在终端中运行已编译的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?
谢谢!
答案 0 :(得分:0)
Sean提到用户构建系统可以帮助您管理依赖关系,它可以让您轻松生活。 或者,如果您只想使用jar,而不是将jar保存到不同的位置,请在项目中创建一个目录(比如说lib)并在那里移动所需的jar。使用IDE将创建的目录包含为依赖项,将其添加到类路径中。
对于intellij(2016.3),请转到“项目设置” - >图书馆 - >使用“Java”选项创建一个新库,并选择要用作库的目录。如果要将其用作jar目录,它将为您提供选项。选择此选项,然后它将要求您选择要使用此库的模块(如果您有多模块项目)。选择后,它会将库添加到您选择的模块中。