Java 20/21 support (OD-1373)
Ben Cooper opened 3 years ago

I am getting a HTTP 500 internal server error when creating an issue. This was initially reported by a user who had Code Writer permissions on a project, but can also be recreated by myself with Project Owner and site admin permissions.

OneDev version: 8.2.0 and 8.2.1 (self-hosted)

The text displayed to the user in the browser is:

HTTP ERROR 500 Internal server error: check server log for details
URI:	/<project_name>/~issues/new
STATUS:	500
MESSAGE:	Internal server error: check server log for details
SERVLET:	io.onedev.server.web.DefaultWicketServlet$$EnhancerByGuice$$157356420-5f1e4890
Powered by Jetty:// 9.4.51.v20230217

server.log output is:

2023-05-10 14:58:47,487 ERROR [qtp197016824-216] io.onedev.server.util.ExceptionUtils Error serving request
java.lang.RuntimeException: BUG! exception in phase 'semantic analysis' in source unit 'Script_49ad8a260adad875f2482744e11b4f29.groovy' Unsupported class file major version 64
	at io.onedev.commons.bootstrap.Bootstrap.unchecked(Bootstrap.java:337)
	at io.onedev.commons.utils.ExceptionUtils.unchecked(ExceptionUtils.java:35)
	at io.onedev.server.persistence.SessionInterceptor$1.call(SessionInterceptor.java:25)
	at io.onedev.server.persistence.DefaultSessionManager.call(DefaultSessionManager.java:90)
	at io.onedev.server.persistence.SessionInterceptor.invoke(SessionInterceptor.java:18)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)
	at com.google.inject.servlet.DefaultFilterPipeline.dispatch(DefaultFilterPipeline.java:47)
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
	at io.onedev.server.git.GoGetFilter.doFilter(GoGetFilter.java:87)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
	at io.onedev.server.git.GitLfsFilter.doFilter(GitLfsFilter.java:455)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
	at io.onedev.server.git.GitFilter.doFilter(GitFilter.java:377)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:458)
	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:373)
	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:370)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
	at io.onedev.server.jetty.DisableTraceFilter.doFilter(DisableTraceFilter.java:28)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:772)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.Server.handle(Server.java:516)
	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
	at java.base/java.lang.Thread.run(Thread.java:1623)
Caused by: org.codehaus.groovy.GroovyBugError: BUG! exception in phase 'semantic analysis' in source unit 'Script_49ad8a260adad875f2482744e11b4f29.groovy' Unsupported class file major version 64
	at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:905)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:627)
	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389)
	at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332)
	at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163)
	at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
	at io.onedev.server.util.GroovyUtils.compile(GroovyUtils.java:31)
	at io.onedev.server.util.GroovyUtils.evalScript(GroovyUtils.java:102)
	at io.onedev.server.buildspecmodel.inputspec.InputSpec.defineClass(InputSpec.java:259)
	at io.onedev.server.model.support.issue.field.FieldUtils.defineFieldBeanClass(FieldUtils.java:76)
	at io.onedev.server.model.support.issue.field.FieldUtils.getFieldBeanClass(FieldUtils.java:64)
	at io.onedev.server.web.component.issue.create.NewIssueEditor.onInitialize(NewIssueEditor.java:95)
	at org.apache.wicket.Component.fireInitialize(Component.java:878)
	at org.apache.wicket.MarkupContainer$3.component(MarkupContainer.java:1077)
	at org.apache.wicket.MarkupContainer$3.component(MarkupContainer.java:1073)
	at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:144)
	at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:123)
	at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:192)
	at org.apache.wicket.MarkupContainer.visitChildren(MarkupContainer.java:984)
	at org.apache.wicket.MarkupContainer.internalInitialize(MarkupContainer.java:1072)
	at org.apache.wicket.MarkupContainer.addedComponent(MarkupContainer.java:1048)
	at org.apache.wicket.MarkupContainer.add(MarkupContainer.java:242)
	at io.onedev.server.web.page.project.issues.create.NewIssuePage.onInitialize(NewIssuePage.java:114)
	at org.apache.wicket.Component.fireInitialize(Component.java:878)
	at org.apache.wicket.MarkupContainer.internalInitialize(MarkupContainer.java:1071)
	at org.apache.wicket.Page.isPageStateless(Page.java:465)
	at org.apache.wicket.core.request.mapper.AbstractBookmarkableMapper.getPageInfo(AbstractBookmarkableMapper.java:498)
	at org.apache.wicket.core.request.mapper.AbstractBookmarkableMapper.mapHandler(AbstractBookmarkableMapper.java:443)
	at org.apache.wicket.core.request.mapper.MountedMapper.mapHandler(MountedMapper.java:160)
	at org.apache.wicket.request.mapper.CompoundRequestMapper.mapHandler(CompoundRequestMapper.java:210)
	at org.apache.wicket.request.mapper.CompoundRequestMapper.mapHandler(CompoundRequestMapper.java:210)
	at org.apache.wicket.request.cycle.RequestCycle.mapUrlFor(RequestCycle.java:443)
	at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:233)
	at org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:175)
	at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:917)
	at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
	at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:274)
	at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:231)
	at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:302)
	at org.apache.wicket.protocol.ws.AbstractUpgradeFilter.processRequestCycle(AbstractUpgradeFilter.java:70)
	at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
	at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:137)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at io.onedev.server.web.DefaultWicketServlet.service(DefaultWicketServlet.java:43)
	at io.onedev.server.persistence.SessionInterceptor$1.call(SessionInterceptor.java:23)
	... 67 common frames omitted
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 64
	at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:199)
	at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:180)
	at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:166)
	at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:287)
	at org.codehaus.groovy.ast.decompiled.AsmDecompiler.parseClass(AsmDecompiler.java:81)
	at org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeResolver.java:251)
	at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:189)
	at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:169)
	at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:125)
	at org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:869)
	at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:506)
	at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:468)
	at org.codehaus.groovy.control.ResolveVisitor.resolveOrFail(ResolveVisitor.java:338)
	at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1466)
	at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:262)
	at org.codehaus.groovy.control.CompilationUnit.lambda$new$16(CompilationUnit.java:738)
	at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901)
	... 116 common frames omitted
  • Ben Cooper changed fields 3 years ago
    Name Previous Value Current Value
    Priority
    Major
    Normal
  • Ben Cooper commented 3 years ago

    Setting my JRE from 20 to 17 has resolved this problem (running on Archlinux).

    It appears Archlinux updated from JRE 19 to 20 on or around April 30th and this is likely the first issue that's been opened since then, I imagine that may be the cause.

  • Robin Shen commented 3 years ago

    OneDev internally uses Groovy which does not support Java 20 yet.

    Please make sure to always use Java LTS versions for OneDev which has been tested.

  • Robin Shen changed fields 3 years ago
    Name Previous Value Current Value
    Type
    Bug
    Improvement
  • Robin Shen changed title 3 years ago
    Previous Value Current Value
    Error 500 when creating issue
    Java 20 support
  • Robin Shen changed title 2 years ago
    Previous Value Current Value
    Java 20 support
    Java 20/21 support
  • OneDev changed state to 'Closed' 2 years ago
    Previous Value Current Value
    Open
    Closed
  • OneDev commented 2 years ago

    State changed as code fixing the issue is committed (bc776b28)

  • OneDev changed state to 'Released' 2 years ago
    Previous Value Current Value
    Closed
    Released
  • OneDev commented 2 years ago

    State changed as build #4330 is successful

  • Davide Beatrici commented 2 weeks ago

    Tanuki Wrapper's minimum Java version is now 21.

    For reference, this is how the server fails to run on both 21 and 25:

    Click to view
    java.lang.RuntimeException: MultiException[javax.servlet.ServletException: io.onedev.server.rest.DefaultServletContainer$$EnhancerByGuice$$204666941-af1dfa2==io.onedev.server.rest.DefaultServletContainer$$EnhancerByGuice$$204666941@ccef86fd{jsp=null,order=-1,inst=true,async=true,src=EMBEDDED:null,STARTED}, javax.servlet.ServletException: 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 @2d76a1e]
             at io.onedev.commons.bootstrap.Bootstrap.unchecked(Bootstrap.java:319)
             at io.onedev.commons.utils.ExceptionUtils.unchecked(ExceptionUtils.java:31)
             at io.onedev.server.jetty.DefaultJettyService.start(DefaultJettyService.java:144)
             at io.onedev.server.OneDev.start(OneDev.java:172)
             at io.onedev.commons.loader.DefaultPluginManager.start(DefaultPluginManager.java:44)
             at io.onedev.commons.loader.AppLoader.start(AppLoader.java:75)
             at io.onedev.commons.bootstrap.Bootstrap.main(Bootstrap.java:200)
             at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
             at java.base/java.lang.reflect.Method.invoke(Method.java:580)
             at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:346)
             at java.base/java.lang.Thread.run(Thread.java:1583)
     Caused by: org.eclipse.jetty.util.MultiException: Multiple exceptions
             at org.eclipse.jetty.util.MultiException.ifExceptionThrow(MultiException.java:122)
             at org.eclipse.jetty.server.Server.doStart(Server.java:413)
             at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
             at io.onedev.server.jetty.DefaultJettyService.start(DefaultJettyService.java:142)
             ... 8 common frames omitted
             Suppressed: [CIRCULAR REFERENCE: javax.servlet.ServletException: io.onedev.server.rest.DefaultServletContainer$$EnhancerByGuice$$204666941-af1dfa2==io.onedev.server.rest.DefaultServletContainer$$EnhancerByGuice$$204666941@ccef86fd{jsp=null,order=-1,inst=true,async=true,src=EMBEDDED:null,STARTED}]
             Suppressed: javax.servlet.ServletException: 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 @2d76a1e
                     at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:455)
                     at io.onedev.server.web.websocket.WebSocketFilter.init(WebSocketFilter.java:56)
                     at org.apache.wicket.protocol.http.WicketServlet.init(WicketServlet.java:271)
                     at javax.servlet.GenericServlet.init(GenericServlet.java:244)
                     at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:632)
                     at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:415)
                     at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0(ServletHandler.java:750)
                     at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357)
                     at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
                     at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
                     at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310)
                     at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
                     at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
                     at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:774)
                     at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379)
                     at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:916)
                     at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
                     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
                     at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
                     at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
                     at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
                     at org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:426)
                     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
                     at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
                     at org.eclipse.jetty.server.Server.start(Server.java:423)
                     at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
                     at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
                     at org.eclipse.jetty.server.Server.doStart(Server.java:387)
                     ... 10 common frames omitted
             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 @2d76a1e
                     at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391)
                     at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367)
                     at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315)
                     at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:203)
                     at java.base/java.lang.reflect.Method.setAccessible(Method.java:197)
                     at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:159)
                     at javassist.util.proxy.DefineClassHelper$JavaOther.defineClass(DefineClassHelper.java:213)
                     at javassist.util.proxy.DefineClassHelper$Java11.defineClass(DefineClassHelper.java:52)
                     at javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:260)
                     at javassist.ClassPool.toClass(ClassPool.java:1240)
                     at javassist.ClassPool.toClass(ClassPool.java:1098)
                     at javassist.ClassPool.toClass(ClassPool.java:1056)
                     at javassist.CtClass.toClass(CtClass.java:1298)
                     at io.onedev.commons.loader.AppLoader.getExtensions(AppLoader.java:213)
                     at io.onedev.server.web.WebApplication.init(WebApplication.java:248)
                     at org.apache.wicket.Application.initApplication(Application.java:954)
                     at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:429)
                     ... 37 common frames omitted
     Caused by: javax.servlet.ServletException: io.onedev.server.rest.DefaultServletContainer$$EnhancerByGuice$$204666941-af1dfa2==io.onedev.server.rest.DefaultServletContainer$$EnhancerByGuice$$204666941@ccef86fd{jsp=null,order=-1,inst=true,async=true,src=EMBEDDED:null,STARTED}
             at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:650)
             at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:415)
             at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0(ServletHandler.java:750)
             at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357)
             at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
             at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
             at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310)
             at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
             at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
             at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:774)
             at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379)
             at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:916)
             at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
             at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
             at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
             at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
             at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
             at org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:426)
             at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
             at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
             at org.eclipse.jetty.server.Server.start(Server.java:423)
             at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
             at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
             at org.eclipse.jetty.server.Server.doStart(Server.java:387)
             ... 10 common frames omitted
     Caused by: org.glassfish.hk2.api.MultiException: A MultiException has 1 exceptions.  They are:
     1. 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 @2d76a1e
             at org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:1061)
             at org.jvnet.hk2.internal.ServiceLocatorImpl.create(ServiceLocatorImpl.java:968)
             at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1072)
             at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1064)
             at org.glassfish.jersey.inject.hk2.AbstractHk2InjectionManager.createAndInitialize(AbstractHk2InjectionManager.java:201)
             at org.glassfish.jersey.inject.hk2.ImmediateHk2InjectionManager.createAndInitialize(ImmediateHk2InjectionManager.java:30)
             at org.glassfish.jersey.server.ApplicationConfigurator.createApplication(ApplicationConfigurator.java:114)
             at org.glassfish.jersey.server.ApplicationConfigurator.init(ApplicationConfigurator.java:72)
             at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$0(ApplicationHandler.java:294)
             at java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4305)
             at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:294)
             at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:261)
             at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
             at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154)
             at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:339)
             at javax.servlet.GenericServlet.init(GenericServlet.java:244)
             at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:632)
             ... 33 common frames omitted
     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 @2d76a1e
             at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391)
             at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367)
             at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315)
             at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:203)
             at java.base/java.lang.reflect.Method.setAccessible(Method.java:197)
             at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:159)
             at javassist.util.proxy.DefineClassHelper$JavaOther.defineClass(DefineClassHelper.java:213)
             at javassist.util.proxy.DefineClassHelper$Java11.defineClass(DefineClassHelper.java:52)
             at javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:260)
             at javassist.ClassPool.toClass(ClassPool.java:1240)
             at javassist.ClassPool.toClass(ClassPool.java:1098)
             at javassist.ClassPool.toClass(ClassPool.java:1056)
             at javassist.CtClass.toClass(CtClass.java:1298)
             at io.onedev.commons.loader.AppLoader.getExtensions(AppLoader.java:213)
             at io.onedev.server.rest.JerseyApplication.<init>(JerseyApplication.java:39)
             at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
             at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
             at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
             at org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1352)
             at org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:1059)
             ... 49 common frames omitted
    
  • Robin Shen commented 2 weeks ago

    @davidebeatrici please check conf/wrapper.conf to make sure it contains below lines:

    wrapper.java.additional.10=--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
    wrapper.java.additional.11=--add-opens=java.base/java.lang=ALL-UNNAMED
    wrapper.java.additional.12=--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
    wrapper.java.additional.13=--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
    wrapper.java.additional.14=--add-opens=java.base/java.util=ALL-UNNAMED
    wrapper.java.additional.15=--add-opens=java.base/java.text=ALL-UNNAMED
    wrapper.java.additional.16=--add-opens=java.desktop/java.awt.font=ALL-UNNAMED
    wrapper.java.additional.30=--add-modules=java.se
    wrapper.java.additional.31=--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED 
    wrapper.java.additional.32=--add-opens=java.management/sun.management=ALL-UNNAMED
    wrapper.java.additional.33=--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
    wrapper.java.additional.50=--add-opens=java.base/sun.nio.fs=ALL-UNNAMED
    
  • Davide Beatrici commented 2 weeks ago

    Found the issue: I was missing wrapper.ignore_sequence_gaps=TRUE at the top and thus the additional parameters were being ignored.

    Interestingly, the Agent runs just fine without those on Java 25, which is why I didn't suspect a configuration error at first.

  • Robin Shen commented 2 weeks ago

    Agent should have this option. It can be in any space, not necessarily at very starting of the file.

  • Davide Beatrici commented 2 weeks ago

    Sorry, I should've clarified: I have already packaged Agent for OpenMandriva (and created pull requests with the resulting patches here), using the latest version of Tanuki Wrapper (3.6.4): https://github.com/OpenMandrivaAssociation/onedev-agent

    The --add-opens parameters are not being applied because the wrapper.ignore_sequence_gaps=TRUE line is missing:

    /usr/lib/jvm/java-25-openjdk/bin/java -Djava.awt.headless=true -Djdk.io.File.allowDeleteReadOnlyFiles=true -Dwrapper.key=8pejFqioJ02XHqqB -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=13070 -Dwrapper.version=3.6.4 -Dwrapper.native_library=tanuki-wrapper -Dwrapper.arch=arm -Dwrapper.cpu.timeout=3600 -Dwrapper.jvmid=1 -Djava.library.path=/usr/lib:/usr/lib64 -classpath /usr/share/java/tanuki-wrapper.jar:/srv/onedev-agent/onedev-agent.jar:/srv/onedev-agent/lib/activation-1.1.1.jar:/srv/onedev-agent/lib/annotations-20.1.0.jar:/srv/onedev-agent/lib/ant-1.10.11.jar:/srv/onedev-agent/lib/ant-launcher-1.10.11.jar:/srv/onedev-agent/lib/aopalliance-repackaged-2.5.0.jar:/srv/onedev-agent/lib/asm-9.1.jar:/srv/onedev-agent/lib/asm-analysis-9.2.jar:/srv/onedev-agent/lib/asm-commons-9.2.jar:/srv/onedev-agent/lib/asm-tree-9.2.jar:/srv/onedev-agent/lib/asm-util-9.2.jar:/srv/onedev-agent/lib/ayza-10.0.0.jar:/srv/onedev-agent/lib/ayza-for-jetty-10.0.0.jar:/srv/onedev-agent/lib/commons-bootstrap-3.1.5.jar:/srv/onedev-agent/lib/commons-codec-1.13.jar:/srv/onedev-agent/lib/commons-collections4-4.1.jar:/srv/onedev-agent/lib/commons-compress-1.26.0.jar:/srv/onedev-agent/lib/commons-io-2.15.1.jar:/srv/onedev-agent/lib/commons-lang3-3.8.1.jar:/srv/onedev-agent/lib/commons-text-1.10.0.jar:/srv/onedev-agent/lib/error_prone_annotations-2.41.0.jar:/srv/onedev-agent/lib/failureaccess-1.0.3.jar:/srv/onedev-agent/lib/guava-33.5.0-jre.jar:/srv/onedev-agent/lib/hk2-api-2.5.0.jar:/srv/onedev-agent/lib/hk2-locator-2.6.1.jar:/srv/onedev-agent/lib/hk2-utils-2.5.0.jar:/srv/onedev-agent/lib/io.onedev.commons-utils-3.1.8.jar:/srv/onedev-agent/lib/j2objc-annotations-3.1.jar:/srv/onedev-agent/lib/jackson-annotations-2.15.0.jar:/srv/onedev-agent/lib/jackson-core-2.15.0.jar:/srv/onedev-agent/lib/jackson-databind-2.15.0.jar:/srv/onedev-agent/lib/jackson-module-jaxb-annotations-2.13.3.jar:/srv/onedev-agent/lib/jakarta.annotation-api-1.3.5.jar:/srv/onedev-agent/lib/jakarta.inject-2.6.1.jar:/srv/onedev-agent/lib/jakarta.ws.rs-api-2.1.6.jar:/srv/onedev-agent/lib/jakarta.xml.bind-api-2.3.3.jar:/srv/onedev-agent/lib/javassist-3.29.1-GA.jar:/srv/onedev-agent/lib/javax.annotation-api-1.3.2.jar:/srv/onedev-agent/lib/javax.websocket-api-1.1.jar:/srv/onedev-agent/lib/jersey-client-2.38.jar:/srv/onedev-agent/lib/jersey-common-2.38.jar:/srv/onedev-agent/lib/jersey-entity-filtering-2.38.jar:/srv/onedev-agent/lib/jersey-hk2-2.38.jar:/srv/onedev-agent/lib/jersey-media-json-jackson-2.38.jar:/srv/onedev-agent/lib/jetty-client-9.4.57.v20241219.jar:/srv/onedev-agent/lib/jetty-http-9.4.57.v20241219.jar:/srv/onedev-agent/lib/jetty-io-9.4.57.v20241219.jar:/srv/onedev-agent/lib/jetty-util-9.4.57.v20241219.jar:/srv/onedev-agent/lib/jffi-1.3.9-native.jar:/srv/onedev-agent/lib/jffi-1.3.9.jar:/srv/onedev-agent/lib/jna-5.9.0.jar:/srv/onedev-agent/lib/jna-platform-5.9.0.jar:/srv/onedev-agent/lib/jnr-a64asm-1.0.0.jar:/srv/onedev-agent/lib/jnr-constants-0.10.3.jar:/srv/onedev-agent/lib/jnr-ffi-2.2.11.jar:/srv/onedev-agent/lib/jnr-posix-3.1.15.jar:/srv/onedev-agent/lib/jnr-x86asm-1.0.2.jar:/srv/onedev-agent/lib/jsoup-1.17.2.jar:/srv/onedev-agent/lib/jspecify-1.0.0.jar:/srv/onedev-agent/lib/jul-to-slf4j-2.0.9.jar:/srv/onedev-agent/lib/k8s-helper-3.2.6.jar:/srv/onedev-agent/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/srv/onedev-agent/lib/log4j-over-slf4j-2.0.9.jar:/srv/onedev-agent/lib/logback-classic-1.4.14.jar:/srv/onedev-agent/lib/logback-core-1.4.14.jar:/srv/onedev-agent/lib/osgi-resource-locator-1.0.3.jar:/srv/onedev-agent/lib/oshi-core-5.8.2.jar:/srv/onedev-agent/lib/pty4j-0.12.5.jar:/srv/onedev-agent/lib/purejavacomm-0.0.11.1.jar:/srv/onedev-agent/lib/slf4j-api-2.0.9.jar:/srv/onedev-agent/lib/unbescape-1.1.2.RELEASE.jar:/srv/onedev-agent/lib/websocket-api-9.4.57.v20241219.jar:/srv/onedev-agent/lib/websocket-client-9.4.57.v20241219.jar:/srv/onedev-agent/lib/websocket-common-9.4.57.v20241219.jar:/srv/onedev-agent/lib/winp-1.30.jar --upgrade-module-path /usr/share/java/tanuki-wrapper.jar --enable-native-access org.tanukisoftware.wrapper org.tanukisoftware.wrapper.WrapperSimpleApp io.onedev.agent.Agent
    

    Despite this, it's working perfectly fine with Java 25.

    I'm assuming Server has old dependencies that don't work correctly with recent versions of Java. In any case, it's now packaged as well: https://github.com/OpenMandrivaAssociation/onedev-server

issue 1/1
Type
Improvement
Priority
Normal
Assignee
Issue Votes (0)
Watchers (6)
Reference
OD-1373
Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover