2017-03-06 66 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目录。选择此选项,然后它会要求您选择要使用此库的模块(如果您有多模块项目)。一旦选定,它会将库添加到您选择的模块中。