我正在尝试为Minecraft Bukkit(Paper(插件制作一个库。我正试图构建一个jar文件,但Gradle给了我一个错误:
Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
我以前从未见过这个错误。
Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
> Could not resolve io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT.
Required by:
project :
> No matching variant of io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT:20220703.182221-166 was found. The consumer was configured to find an API of a library compatible with Java 16, preferably in the form of class files, preferably optimized for standard JVMs, and its dependencies declared externally but:
- Variant 'apiElements' capability io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT declares an API of a library, packaged as a jar, and its dependencies declared externally:
- Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 16
- Other compatible attribute:
- Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)
- Variant 'javadocElements' capability io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT declares a runtime of a component, and its dependencies declared externally:
- Incompatible because this component declares documentation and the consumer needed a library
- Other compatible attributes:
- Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)
- Doesn't say anything about its target Java version (required compatibility with Java 16)
- Doesn't say anything about its elements (required them preferably in the form of class files)
- Variant 'runtimeElements' capability io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT declares a runtime of a library, packaged as a jar, and its dependencies declared externally:
- Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 16
- Other compatible attribute:
- Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)
- Variant 'sourcesElements' capability io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT declares a runtime of a component, and its dependencies declared externally:
- Incompatible because this component declares documentation and the consumer needed a library
- Other compatible attributes:
- Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)
- Doesn't say anything about its target Java version (required compatibility with Java 16)
- Doesn't say anything about its elements (required them preferably in the form of class files)
完整的输出日志太长了,我已经将其上传到了pastebin:
带扫描-调试(全输出(
plugins {
id("java")
id("maven-publish")
}
group = "ml.windleaf"
version = "1.0.1"
repositories {
mavenCentral()
maven("https://jitpack.io")
maven("https://repo.papermc.io/repository/maven-public/")
}
dependencies {
testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1")
implementation("io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT")
// https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core
implementation("org.apache.logging.log4j:log4j-core:2.18.0")
}
tasks.getByName<Test>("test") {
useJUnitPlatform()
}
allprojects {
apply(plugin = "java")
apply(plugin = "java-library")
apply(plugin = "maven-publish")
repositories {
mavenCentral()
maven("https://jitpack.io")
maven("https://repo.papermc.io/repository/maven-public/")
}
dependencies {
implementation("org.jetbrains:annotations:23.0.0")
implementation("org.apache.maven:maven-artifact:3.8.5")
}
tasks {
compileJava {
options.encoding = "UTF-8"
}
}
}
publishing {
publications {
create("maven_public", MavenPublication::class) {
groupId = "ml.windleaf"
artifactId = "PlugApi"
version = version
from(components.getByName("java"))
}
}
}
任何人都请帮我分析一下为什么会出现这样的错误。
tl;dr:Paper API文档说要将Java版本设置为17——看起来你还没有这么做。尝试添加
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
}
解释
Gradle给你的错误很详细,但它确实解释了发生了什么
有趣的第一点是:
Could not resolve io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT
Gradle找不到您声明的依赖项。通过查看Paper API文档,您使用了正确的Maven知识库和正确的依赖关系,所以Gradle必须有另一个原因。。。
No matching variant of
io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT:20220703.182221-166
was found.
The consumer was configured to find an API of a library compatible with Java 16
基本上;消费者;(这是你的项目(在说";我需要一些能与Java16一起工作的东西,因为这就是我正在使用的东西;。
Incompatible because this component declares a component compatible with Java 17
and the consumer needed a component compatible with Java 16
现在Gradle发现了一些非常接近的东西,但它被取消了资格,因为它使用的是Java17,这与您的项目需求不匹配。
Gradle还列出了一些其他变体,但它们也不合格,因为它们不是Java库——它们是源代码或Javadoc变体。