[英]How to attach the source to the jar in the Gradle (Gradle 6.3.) build that can be used in eclipse External Dependencies
[英]Minecraft Forge Gradle adds external dependencies ,but does not build the dependencies to the jar
这是我的 Gradle 文件
buildscript {
repositories {
maven { url = 'https://files.minecraftforge.net/maven' }
jcenter()
mavenCentral()
}
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
classpath files('libs/json-lib-2.4-jdk15.jar')
}
}
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
apply plugin: 'net.minecraftforge.gradle'
group = 'siongsng.rpmtwupdatemod'
version = '1.0.0'
archivesBaseName = 'rpmtw_update_mod'
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8'
minecraft {
mappings channel: 'snapshot', version: '20210309-1.16.5'
runs {
client {
workingDirectory project.file('run')
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
property 'forge.logging.console.level', 'debug'
mods {
rpmtwupdatemod {
source sourceSets.main
}
}
}
server {
workingDirectory project.file('run')
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
property 'forge.logging.console.level', 'debug'
mods {
rpmtwupdatemod {
source sourceSets.main
}
}
}
data {
workingDirectory project.file('run')
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
property 'forge.logging.console.level', 'debug'
args '--mod', 'rpmtwupdatemod', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
mods {
rpmtwupdatemod {
source sourceSets.main
}
}
}
}
}
sourceSets.main.resources { srcDir 'src/generated/resources' }
dependencies {
implementation files('libs/json-lib-2.4-jdk15.jar')
minecraft 'net.minecraftforge:forge:1.16.5-36.1.1'
}
jar {
manifest {
attributes([
"Specification-Title" : "rpmtwupdatemod",
"Specification-Vendor" : "SiongSng",
"Specification-Version" : "1",
"Implementation-Title" : project.name,
"Implementation-Version" : version,
"Implementation-Vendor" : "SiongSng",
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
])
}
}
jar.finalizedBy('reobfJar')
但是,当我使用 Gradle Build 时,在我的世界中运行 output jar 时会出现以下错误
java.lang.NoClassDefFoundError: net/sf/json/JSONObject
at siongsng.rpmtwupdatemod.json.get(json.java:29) ~[rpmtw_update_mod:1.0.0]
at siongsng.rpmtwupdatemod.json.ver(json.java:38) ~[rpmtw_update_mod:1.0.0]
at siongsng.rpmtwupdatemod.RpmtwUpdateMod.<init>(RpmtwUpdateMod.java:27) ~[rpmtw_update_mod:1.0.0]
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64) ~[?:?]
at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[?:?]
at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) ~[?:?]
at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:350) ~[?:?]
at java.lang.Class.newInstance(Class.java:645) ~[?:?]
at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:81) ~[forge:36.1]
at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:120) ~[forge:?]
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1800) [?:?]
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1792) [?:?]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) [?:?]
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1016) [?:?]
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1665) [?:?]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1598) [?:?]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) [?:?]
Caused by: java.lang.ClassNotFoundException: net.sf.json.JSONObject
at java.lang.ClassLoader.findClass(ClassLoader.java:719) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[?:?]
at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:106) ~[modlauncher-8.0.9.jar:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
... 19 more
这是 json.java 中的代码
package siongsng.rpmtwupdatemod;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import net.sf.json.JSONObject;
public class json {
public static JSONObject get() {
StringBuilder json = new StringBuilder();
try {
URL urlObject = new URL("https://api.github.com/repos/SiongSng/ResourcePack-Mod-zh_tw/releases/latest");
URLConnection uc = urlObject.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
String inputLine = null;
while ( (inputLine = in.readLine()) != null) {
json.append(inputLine);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return JSONObject.fromObject(json.toString());
}
public static Object loadJson() {
JSONObject aaa = get();
return aaa.getJSONArray("assets").getJSONObject(0).get("browser_download_url");
}
public static Object ver() {
JSONObject aaa = get();
return aaa.get("tag_name");
}
}
我猜是因为这个jar里面没有依赖(json-lib),但是我已经在Build配置文件中设置了,请问是什么原因造成的这里是这个mod的完整代码( https:// github.com/SiongSng/RPMTW-Update-Mod/tree/master/1.16-forge )
尝试使用implementation group: 'net.sf.json-lib', name: 'json-lib', version: '2.4'
这是你的依赖
https://mvnrepository.com/artifact/net.sf.json-lib/json-lib/2.4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.