繁体   English   中英

无法导入包 org.objectweb.asm

[英]Unable to import package org.objectweb.asm

我正在尝试编译其他开发人员的开源自定义库。
我已经编译或找到依赖项,但它无法在 gradle 中构建,它无法导入 java 的内部库包org.objectweb.asm
它是一个 java 内部库,所以它必须在 tools.jar 但 build.properties 它已经导入 java 的 tools.jar 并且已经应用​​插件 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' }
}

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'
}
}

其他部分可以在这里找到: 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 不存在导入 org.objectweb.asm.ClassWriter; ^

C:\\tap\\core\\src\\main\\java\\com\\nemosw\\spigot\\tap\\event\\ASMEntityEventExecutor.java:7: 错误:包 org.objectweb.asm 不存在导入 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 不存在导入 org.objectweb.asm.ClassWriter;

您可以在依赖项块中添加依赖项-

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 : org.objectweb.asm

您可能希望将其添加到Gradle构建中: compile group: 'org.ow2.asm', name: 'asm', version: '7.1'

对于某些内部 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 开发和前沿部署的稳定性。 绝不建议使用此类内部组件。

当然很多事情不建议我们还是做。 享受!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM