2017-03-06 97 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,這需要我把Gson jar作爲依賴使用它的類。IntelliJ - 包括依賴罐當建一個罐子

爲此,我已將其設置爲模塊下項目設置的依賴項。這使我可以導入正確的類,以便編譯時不會出錯。

The Modules Menu

這使得在外部庫的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?

謝謝!

+1

幫你一個忙,並使用Maven或Gradle等構建系統。所有這些都與Idea很好地結合在一起,他們也都支持創建一個「胖JAR」,它不僅包含您的應用程序,還包含您使用的所有庫。在Maven中,這將通過[maven-shade-plugin]完成(https://maven.apache.org/plugins/maven-shade-plugin/) –

+0

請[看這個答案](http:// stackoverflow。 com/a/42200519/104891)。 – CrazyCoder

回答

0

正如肖恩提到的用戶構建系統可以幫助您管理您的依賴關係,它使您的生活變得輕鬆。 或者,如果您只想使用jar而不是將jar保存到不同的位置,請在您的項目中創建一個目錄(讓我們說lib),並將需要的jar移動到那裏。使用IDE將創建的目錄作爲依賴項添加到類路徑中。

對於intellij(2016.3),請轉到「項目設置」 - >庫 - >使用「Java」選項創建一個新庫,並選擇要用作庫的目錄。它會給你選項,如果你想用它作爲jar目錄。選擇此選項,然後它會要求您選擇要使用此庫的模塊(如果您有多模塊項目)。一旦選定,它會將庫添加到您選擇的模塊中。