2017-03-06 8 views
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 jarを依存関係として使用してクラスを使用する必要があるGsonを使用しようとしています。IntelliJ - jarファイルを作成するときに依存関係のjarファイルを含める

これを行うには、モジュールのプロジェクト設定でそれを依存関係として設定しました。これにより、エラーなくコンパイルできるように正しいクラスをインポートすることができました。

The Modules Menu

これは、外部ライブラリの下の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 

私の外部ライブラリが追加されていないように見えますができます。どのように私は正しい依存関係で私の瓶を実行するのですか?

ありがとう!

+1

MavenやGradleなどのビルドシステムを利用して作業してください。これらはすべてIdeaにうまく統合されています。また、あなたのアプリケーションだけでなく、あなたが使っているすべてのライブラリを含む "fat JAR"の作成をサポートしています。 Mavenでは、これは[Maven-shade-plugin](https://maven.apache.org/plugins/maven-shade-plugin/) –

+0

で行います。[この回答を見る](http:// stackoverflow。 com/a/42200519/104891)に記載されている。 – CrazyCoder

答えて

0

Seanはあなたの依存関係を管理するのに役立ついずれかのユーザービルドシステムを指摘していたので、それはあなたの人生を簡単にします。 また、jarファイルを別の場所に保存する代わりにjarファイルだけを使用する場合は、プロジェクト内でディレクトリ(libと言う)を作成し、そこに必要なjarファイルを移動します。あなたのクラスパスに追加するIDEを使用して、作成されたディレクトリを依存関係として含めます。 >ライブラリは - - >「Javaの」オプションを使用して新しいライブラリを作成し、ライブラリとして使用するディレクトリを選択しIntelliJのために

(2016.3)は、「プロジェクト設定」に進みます。あなたはJARディレクトリとしてそれを使用したい場合、それはあなたのオプションを提供します。このオプションを選択すると、このライブラリを使用するモジュールを選択するように要求されます(マルチモジュールプロジェクトの場合)。選択すると、選択したモジュールにライブラリが追加されます。

関連する問題