繁体   English   中英

IntelliJ-构建罐子时包括依赖罐子

[英]IntelliJ - Include dependancy jars when building a jar

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?

谢谢!

正如Sean提到的任一用户构建系统都可以帮助您管理依赖关系,这使您的生活变得轻松。 或者,如果您只想使用jar,而不是将jar保留在其他位置,则在项目内创建目录(假设为lib),然后将所需的jar移动到那里。 使用IDE将创建的目录包含为依赖项,这会将其添加到类路径中。

对于intellij(2016.3),请转到“项目设置”->库->使用“ Java”选项创建新库,然后选择要用作库的目录。 如果要将其用作jar目录,它将为您提供选项。 选择此选项,然后将要求您选择要使用此库的模块(如果您有多模块项目)。 选择后,它将库添加到您选择的模块中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM