lmenezes / cerebro

MIT License
5.51k stars 714 forks source link

Cerebro can't run with jdk17 #542

Open Ramboooooooo opened 2 years ago

Ramboooooooo commented 2 years ago

[root@node-201 bin]# java -version java version "17.0.1" 2021-10-19 LTS Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39) Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing) [root@node-201 bin]# ./cerebro Oops, cannot start the server. com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Unable to load cache item at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2051) at com.google.common.cache.LocalCache.get(LocalCache.java:3951) at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974) at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958) at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4964) at com.google.inject.internal.FailableCache.get(FailableCache.java:54) at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:49) at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:155) at com.google.inject.internal.InjectorImpl.initializeBinding(InjectorImpl.java:592) at com.google.inject.internal.AbstractBindingProcessor$Processor.initializeBinding(AbstractBindingProcessor.java:173) at com.google.inject.internal.AbstractBindingProcessor$Processor.lambda$scheduleInitialization$0(AbstractBindingProcessor.java:160) at com.google.inject.internal.ProcessedBindingData.initializeBindings(ProcessedBindingData.java:49) at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:124) at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:108) at com.google.inject.Guice.createInjector(Guice.java:87) at com.google.inject.Guice.createInjector(Guice.java:78) at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:200) at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:155) at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21) at play.core.server.ProdServerStart$.start(ProdServerStart.scala:54) at play.core.server.ProdServerStart$.main(ProdServerStart.scala:30) at play.core.server.ProdServerStart.main(ProdServerStart.scala) Caused by: java.lang.IllegalStateException: Unable to load cache item at com.google.inject.internal.cglib.core.internal.$LoadingCache.createEntry(LoadingCache.java:79) at com.google.inject.internal.cglib.core.internal.$LoadingCache.get(LoadingCache.java:34) at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:119) at com.google.inject.internal.cglib.core.$AbstractClassGenerator.create(AbstractClassGenerator.java:294) at com.google.inject.internal.cglib.reflect.$FastClass$Generator.create(FastClass.java:65) at com.google.inject.internal.BytecodeGen.newFastClassForMember(BytecodeGen.java:258) at com.google.inject.internal.BytecodeGen.newFastClassForMember(BytecodeGen.java:207) at com.google.inject.internal.DefaultConstructionProxyFactory.create(DefaultConstructionProxyFactory.java:49) at com.google.inject.internal.ProxyFactory.create(ProxyFactory.java:156) at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:94) at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:30) at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:38) at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:34) at com.google.inject.internal.FailableCache$1.load(FailableCache.java:43) at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529) at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278) at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155) at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045) ... 21 more Caused by: java.lang.ExceptionInInitializerError at com.google.inject.internal.cglib.core.$DuplicatesPredicate.evaluate(DuplicatesPredicate.java:104) at com.google.inject.internal.cglib.core.$CollectionUtils.filter(CollectionUtils.java:52) at com.google.inject.internal.cglib.reflect.$FastClassEmitter.(FastClassEmitter.java:69) at com.google.inject.internal.cglib.reflect.$FastClass$Generator.generateClass(FastClass.java:77) at com.google.inject.internal.cglib.core.$DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) at com.google.inject.internal.cglib.core.$AbstractClassGenerator.generate(AbstractClassGenerator.java:332) at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:96) at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94) at com.google.inject.internal.cglib.core.internal.$LoadingCache$2.call(LoadingCache.java:54) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at com.google.inject.internal.cglib.core.internal.$LoadingCache.createEntry(LoadingCache.java:61) ... 38 more Caused by: com.google.inject.internal.cglib.core.$CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @3bf44630 at com.google.inject.internal.cglib.core.$ReflectUtils.defineClass(ReflectUtils.java:464) at com.google.inject.internal.cglib.core.$AbstractClassGenerator.generate(AbstractClassGenerator.java:339) at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:96) at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94) at com.google.inject.internal.cglib.core.internal.$LoadingCache$2.call(LoadingCache.java:54) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at com.google.inject.internal.cglib.core.internal.$LoadingCache.createEntry(LoadingCache.java:61) at com.google.inject.internal.cglib.core.internal.$LoadingCache.get(LoadingCache.java:34) at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:119) at com.google.inject.internal.cglib.core.$AbstractClassGenerator.create(AbstractClassGenerator.java:294) at com.google.inject.internal.cglib.core.$KeyFactory$Generator.create(KeyFactory.java:221) at com.google.inject.internal.cglib.core.$KeyFactory.create(KeyFactory.java:174) at com.google.inject.internal.cglib.core.$KeyFactory.create(KeyFactory.java:157) at com.google.inject.internal.cglib.core.$KeyFactory.create(KeyFactory.java:149) at com.google.inject.internal.cglib.core.$KeyFactory.create(KeyFactory.java:145) at com.google.inject.internal.cglib.core.$MethodWrapper.(MethodWrapper.java:23) ... 49 more Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @3bf44630 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) 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.inject.internal.cglib.core.$ReflectUtils$1.run(ReflectUtils.java:61) at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) at com.google.inject.internal.cglib.core.$ReflectUtils.(ReflectUtils.java:52) at com.google.inject.internal.cglib.reflect.$FastClassEmitter.(FastClassEmitter.java:67) ... 46 more

T100D commented 2 years ago

Same with JDK16

jduepmeier commented 2 years ago

This is a duplicate of https://github.com/lmenezes/cerebro/issues/514

congliu19 commented 11 months ago

Same with jdk17

riroisin commented 10 months ago

v0.9.4+jdk 17+batch file. plz add this setenses. @echo off set JAVA_HOME="C:\cerebro-0.9.4\jdk-17.0.8" ...(AND) rem Call the application and pass all arguments unchanged. "%_JAVACMD%" !_JAVA_OPTS! --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED --add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED --add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED !CEREBRO_OPTS! -cp "%APP_CLASSPATH%" %MAIN_CLASS% !_APP_ARGS!

riroisin commented 10 months ago

v0.9.4+jdk 17+CentOS 7

write cerebro-0.9.4/bin/cerebro

export JAVA_HOME="JDK17 FULL PATH" ...(AND) run() { ...(AND) if [[ "$JAVA_OPTS" != "" ]]; then java_opts="${JAVA_OPTS}" else java_opts="--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/sun.net.www.protocol.file=ALL-UNNAMED"

save and process restart.

Fishlulu1314 commented 5 months ago

v0.9.4+jdk 17+batch file. plz add this setenses. @echo off set JAVA_HOME="C:\cerebro-0.9.4\jdk-17.0.8" ...(AND) rem Call the application and pass all arguments unchanged. "%_JAVACMD%" !_JAVA_OPTS! --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED --add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED --add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED !CEREBRO_OPTS! -cp "%APP_CLASSPATH%" %MAIN_CLASS% !_APP_ARGS!

Bro I have updated the batch file,it can run without flash exit and listen port 9000,but when i visit it,it throws this error(my jdk edition is 17)


[info] play.api.Play - Application started (Prod) (no global state)
[info] p.c.s.AkkaHttpServer - Listening for HTTP on /[0:0:0:0:0:0:0:0]:9000
[error] p.a.h.DefaultHttpErrorHandler -

! @84medn847 - Internal server error, for (GET) [/css/lib.css] ->

play.api.UnexpectedException: Unexpected exception[RuntimeException: java.lang.IllegalAccessError: class play.utils.Resources$ (in unnamed module @0x55f3c410) cannot access class sun.net.www.protocol.file.FileURLConnection (in module java.base) because module java.base does not export sun.net.www.protocol.file to unnamed module @0x55f3c410]
        at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:355)
        at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:261)
        at play.core.server.AkkaHttpServer$$anonfun$2.applyOrElse(AkkaHttpServer.scala:430)
        at play.core.server.AkkaHttpServer$$anonfun$2.applyOrElse(AkkaHttpServer.scala:422)
        at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:454)
Caused by: java.lang.RuntimeException: java.lang.IllegalAccessError: class play.utils.Resources$ (in unnamed module @0x55f3c410) cannot access class sun.net.www.protocol.file.FileURLConnection (in module java.base) because module java.base does not export sun.net.www.protocol.file to unnamed module @0x55f3c410
        at play.api.mvc.ActionBuilder$$anon$9.apply(Action.scala:384)
        at play.api.mvc.Action.$anonfun$apply$4(Action.scala:82)
        at play.api.libs.streams.StrictAccumulator.$anonfun$mapFuture$4(Accumulator.scala:168)
        at scala.util.Try$.apply(Try.scala:210)
        at play.api.libs.streams.StrictAccumulator.$anonfun$mapFuture$3(Accumulator.scala:168)
Caused by: java.lang.IllegalAccessError: class play.utils.Resources$ (in unnamed module @0x55f3c410) cannot access class sun.net.www.protocol.file.FileURLConnection (in module java.base) because module java.base does not export sun.net.www.protocol.file to unnamed module @0x55f3c410
        at play.utils.Resources$.isUrlConnectionADirectory(Resources.scala:36)
        at controllers.AssetsBuilder.$anonfun$assetAt$3(Assets.scala:822)
        at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:434)
        at play.api.libs.streams.Execution$trampoline$.execute(Execution.scala:70)
        at scala.concurrent.impl.Promise$Transformation.submitWithValue(Promise.scala:393)```
pramodpatil9882 commented 3 weeks ago

cerebro 0.9.4 does not work with java 17.

workaround is we have to set the java runtime path to 11 explicitly we have change bat file accordingly :

@echo off
setlocal
set JAVA_HOME=C:\Program Files\Java\jdk-11.0.14
set PATH=%JAVA_HOME%\bin;%PATH%
set JAVA_TOOL_OPTIONS=--add-opens=jdk.naming.rmi/com.sun.jndi.rmi.registry=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.net=ALL-UNNAMED
java -jar C:\Users\username\Downloads\cerebro-0.9.4\cerebro-0.9.4\lib\cerebro.cerebro-0.9.4-launcher.jar
endlocal 

cheers!