![](/img/trans.png)
[英]install osgi.bundle; org.objectweb.asm 7.0.0 for eclipse
[英]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.