我们的项目使用模式-回购服务器。启动架构-回购服务器的代码如下-
package technorati.tut.fes;
import org.schemarepo.server.RepositoryServer;
import java.util.Properties;
public class Main2 {
public static void main(String[] args) throws Exception {
Properties props = new Properties();
props.put("schema-repo.class", "com.technorati.camus.schemaregistry.ZooKeeperRepository");
props.put("schema-repo.zookeeper.ensemble", "kafka01.cap.qa.opal.synacor.com:2181,kafka02.cap.qa.opal.synacor.com:2181,kafka03.cap.qa.opal.synacor.com:2181");
RepositoryServer rs = new RepositoryServer(props);
rs.start();
}
}这段代码在java11中运行良好。
我正在将java版本从java 11升级到java 17。升级之后,当我启动服务时,会出现以下错误。
注意:启动列表中的模块是--add java.base/java.lang=ALL-UNNAMED add--打开java.base/java.util=ALL-UNNAMED - are jdk.management/com.sun.management.internal=ALL-UNNAMED
我怎样才能解决这个问题?
com.google.inject.internal.util.$ComputationException: 14:18:48通过线程"main“com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:553) at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:419) at com.google.inject.internal.util.$CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041) at com.google.inject.internal中的SLF4J异常的信息路由java.util.logging流量com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:49),com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:125),com.google.inject.internal.InjectorImpl.initializeBinding(InjectorImpl.java:507),com.google.inject.internal.AbstractBindingProcessor$Processor$1.run(AbstractBindingProcessor.java:159),com.google.inject.internal.ProcessedBindingData.initializeBindings(ProcessedBindingData.java:44),com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreatorcom.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106) at com.google.inject.Guice.createInjector(Guice.java:95) at com.google.inject.Guice.createInjector(Guice.java:72) at com.google.inject.Guice.createInjector(Guice.java:62) at technorati.tut.fes.Main2.main(Main2.java:12)由: java.lang.ExceptionInInitializerError at com.google引起.inject.internal.cglib.reflect.$FastClassEmitter.(FastClassEmitter.java:67) at com.google.inject.internal.cglib.reflect.$FastClass$Generator.generateClass(FastClass.java:72) at com.google.inject.internal.cglib.core.$DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) at com.google.inject.internal.cglib.core.$AbstractClassGenerator.create(AbstractClassGenerator.java:216) at com.google.inject.internal.cglib.reflect.$FastClass$Generator.create(FastClass.java:64) at com.google.inject.internal.BytecodeGencom.google.inject.internal.DefaultConstructionProxyFactory.create(DefaultConstructionProxyFactory.java:53),com.google.inject.internal.ProxyFactory.create(ProxyFactory.java:153),com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:89),com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:28),com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:36),com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:32)在com.google.inject.internal.FailableCache$1.apply(FailableCache.java:39) at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:549) .还有15个原因: java.lang.reflect.InaccessibleObjectException:无法做出保护的最终java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,在java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199) at java.base/java.lang.reflect.Method.setAccessible(Method.java:193) at com.google向未命名的模块@f0c8a99“打开java.lang”。inject.internal.cglib.core.$ReflectUtils$2.run(ReflectUtils.java:56) at java.base/java.security.AccessController.doPrivileged(AccessController.java:312) at com.google.inject.internal.cglib.core.$ReflectUtils.(ReflectUtils.java:46) . 29
进程已完成,退出代码为%1
这是很好的1:https://mvnrepository.com/artifact/org.schemarepo/schema-repo-server。
注意:我添加了vm参数--illegal-access=permit --add-opens java.base/java.lang=ALL-UNNAMED,但在java-17上仍然面临这个错误
发布于 2021-06-28 19:04:41
也许可以尝试在lauch添加一个vm参数:
java --add-opens java.base/java.lang=ALL-UNNAMED在Java 17中,--非法访问被设置为无效(所有值都等同于拒绝),但是仍然可以使用-Add- open命令行选项或Add-Opens JAR-file清单属性来打开特定的包(cf )。(openjdk.java.net/jep/403)
https://stackoverflow.com/questions/68168691
复制相似问题