java - Gradle Jar 依赖错误

标签 java json intellij-idea gradle

我有一个使用 Gradle 构建的 java 程序。在此程序中,我使用 JSON jar“org.json:json:2014113”,当我在 IDE (IntelliJ 14) 中运行它时,该程序编译并运行得很好。当我运行该 jar 时,它也编译并运行得很好,除了当调用我使用 JSON 的函数时,我会收到 Java.lang.NoClassDefFoundError: org/json/JSONArray 错误,这里是我的 build.gradle 脚本

version 'UR'

apply plugin: 'java'

sourceCompatibility = 8

repositories {
    mavenCentral()
}

dependencies {

    compile group: 'org.json', name: 'json', version: '20141113'

}

jar {

    destinationDir = file("C:\\Users\\Jonah\\Documents\\Software\\RapIDE Builds")

    manifest {
        attributes 'Main-Class': 'frames.MainFrame'
    }

}

这是我的 JSON 类

package logic;

import frames.MainFrame;

import org.json.JSONArray;
import org.json.JSONObject;

public class JSONparser extends MainFrame
{

    public static String SLrtrn;

    public static void parseJSON(String JSONinput)
    {

        final JSONArray JSONrtrn = new JSONArray(JSONinput);

        rhymeList.removeAllElements();

        for (int i = 0; i < JSONrtrn.length(); ++i)
        {
            JSONObject parsedObj = (JSONObject) JSONrtrn.get(i);
            SLrtrn = parsedObj.get("word").toString();

            rhymeList.addElement(SLrtrn);
        }
    }
}

我在 build.gradle 脚本中做错了什么吗?

最佳答案

您的 Gradle 脚本没问题,但是当您运行 JAR 时,您尚未将 org.json jar 包含在类路径上。

如果您不想这样做,您可以创建所谓的 fat jar,它将 org.json JAR 捆绑在您的 JAR 中。 here描述了这样的过程.

还有很多其他方法可以做到这一点(请参阅 herehere ),因此您应该研究不同的选项,但最终在编译时需要存在 org.json JAR,而且当你运行程序时。目前您只满足了第一个要求。

关于java - Gradle Jar 依赖错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31777603/

相关文章:

java - 无法使用 cxf http-conduit 连接 SSL 网络服务

java - 向上转型;为什么我得到输出 11

java - Apache Storm : ClassNotFoundException when deploying jar to remoteCluster

java - Logback 引用在使用 Spring Boot 的 IntelliJ 中为红色

java - 在 Intellij IDEA 中,查找实现接口(interface)但不扩展另一个类的类

java - Spring Boot 在关闭时关闭 hibernate session - 在 @Async 方法完成之前

c# - 如何使用 Mailgun webhook 从邮件 header 解析 JSON 数组

json - 如何通过Powershell AD计算机所有者属性(如电子邮件和帐户名)获取?

Python 和 Json : Multiline input data into Json

java - 在 IntelliJ 插件中创建后台任务