我有一个使用 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描述了这样的过程.
还有很多其他方法可以做到这一点(请参阅 here 和 here ),因此您应该研究不同的选项,但最终在编译时需要存在 org.json JAR,而且当你运行程序时。目前您只满足了第一个要求。
关于java - Gradle Jar 依赖错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31777603/