无法导入包 org.objectweb.asm

我正在尝试编译其他开发人员的开源自定义库。

我已经编译或找到依赖项,但它无法在 gradle 中构建,因为它无法导入 java 的内部库包org.objectweb.asm

它是一个 java 内部库,所以它必须在 tools.jar 中,但 build.properties 它已经导入了 java 的工具。 jar 和 aleady 应用插件 java 所以我不知道


这是 build.properties(主要部分)


allprojects {

apply plugin: 'java'


group 'com.nemosw.spigot'

version '1.2.21'


sourceCompatibility = 1.8

targetCompatibility = 1.8

compileJava.options.encoding = 'UTF-8'

javadoc.options.encoding = 'UTF-8'


repositories {

    // junit

    mavenCentral()

    // nms spigot & mox

    mavenLocal()

}

}



project(':core') {

processResources {

    filesMatching('**/*.yml') {

        expand project.properties

    }

}


repositories {

    maven { url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }

    maven { url = 'https://oss.sonatype.org/content/repositories/snapshots/' }

    flatDir { dirs 'libs' }

}

}

}

其他部分可以在这里找到: https: //github.com/nemosrc/tap

您还需要修复一些依赖项并编译他的 mox 库(所有这些)

https://github.com/nemosrc/mox-math

https://github.com/nemosrc/mox-tools

https://github.com/nemosrc/mox-collections

https://github.com/nemosrc/mox-task

以及由于库失败而导致的大量错误。

C:\tap\core\src\main\java\com\nemosw\spigot\tap\event\ASMEntityEventExecutor.java:6: 错误:包 org.objectweb.asm 不存在 import org.objectweb.asm.ClassWriter; ^

C:\tap\core\src\main\java\com\nemosw\spigot\tap\event\ASMEntityEventExecutor.java:7: 错误:包 org.objectweb.asm 不存在 import org.objectweb.asm.MethodVisitor; ^

C:\tap\core\src\main\java\com\nemosw\spigot\tap\event\ASMEntityEventExecutor.java:8: 错误:包 org.objectweb.asm 不存在 import org.objectweb.asm.Type; ^

C:\tap\core\src\main\java\com\nemosw\spigot\tap\event\ASMEntityEventExecutor.java:15: 错误:包 org.objectweb.asm 不存在导入静态 org.objectweb.asm.Opcodes。 *; ^

C:\tap\core\src\main\java\com\nemosw\spigot\tap\event\ASMEventExecutor.java:9: 错误:包 org.objectweb.asm 不存在 import org.objectweb.asm.ClassWriter;



慕盖茨4494581
浏览 389回答 4
4回答

白衣染霜花

您可以在 dependencies 块中添加依赖项 -dependencies {     compileOnly 'org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT'     compileOnly files(Jvm.current().toolsJar)     compile 'com.nemosw.mox:mox-collections:1.0'     compile 'com.nemosw.mox:mox-task:1.0'     compile 'com.nemosw.mox:mox-math:1.0.2'     compile 'com.nemosw.mox:mox-tools:1.1'     compile 'org.ow2.asm:asm:'7.1' }您可以从该站点找到更多依赖项 https://mvnrepository.com/

达令说

你为什么会认为它是一个 Java 内部库?该org.objectweb.asm包是 ASM 库的一部分: https: //asm.ow2.io/您可能希望将其添加到您的 Gradle 构建中:compile group: 'org.ow2.asm', name: 'asm', version: '7.1'

ITMISS

对于某些内部 API,这是 javac 中的限制。您可以将此属性与 javac 一起使用以使其工作 javac -XDignore.symbol.file=true从 Java 9 开始,您可以使用 javac --add-exports java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED

白猪掌柜的

使用 Java 9+?创建一个名为module-info.java的文件module com.example.nightmare {     requires org.objectweb.asm; }放在 jar 的根目录或者 'java/main/src/resources'(您的努力量或结果可能会有所不同,并且可能需要更多要求)它是供 JVM 组件使用的内部类,它可能不仅在版本之间有意想不到的变化,而且在补丁中没有计划,所以使用风险自负。推荐的方法从与 JVM 使用的 jar 分开的 jar 加载版本。我推测将其保留在“内部”会增加 OpenJdk 开发和前沿部署的稳定性。绝不建议使用此类内部组件。当然,很多事情不建议我们做。享受!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java