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 jarを依存関係として使用してクラスを使用する必要があるGsonを使用しようとしています。IntelliJ - jarファイルを作成するときに依存関係の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
私の外部ライブラリが追加されていないように見えますができます。どのように私は正しい依存関係で私の瓶を実行するのですか?
ありがとう!
MavenやGradleなどのビルドシステムを利用して作業してください。これらはすべてIdeaにうまく統合されています。また、あなたのアプリケーションだけでなく、あなたが使っているすべてのライブラリを含む "fat JAR"の作成をサポートしています。 Mavenでは、これは[Maven-shade-plugin](https://maven.apache.org/plugins/maven-shade-plugin/) –
で行います。[この回答を見る](http:// stackoverflow。 com/a/42200519/104891)に記載されている。 – CrazyCoder