Version 15.10.10 Offline installation of Flavor failed

This problem has been bothering me for several days. Could you please help me take a look at this problem。

15.10.10 Offline installation of Flavor failed
The error log is as follows:

2024-05-31 17:17:06,782 [http-nio-8080-exec-4 - http://localhost:8080/xwiki2/bin/distribution/XWiki/Distribution?xredirect=%2Fxwiki2%2Fbin%2Fview%2FXWiki%2FConfigurableClassMacros%3Flanguage%3D] ERROR o.a.v.d.null                   - Exception in macro #controller called at environment:/templates/distribution.vm[line 1, column 1]
2024-05-31 17:17:06,784 [http-nio-8080-exec-2 - http://localhost:8080/xwiki2/bin/distribution/XWiki/Distribution?extensionId=org.xwiki.platform%3Axwiki-platform-distribution-flavor-mainwiki&extensionVersion=15.10.10&extensionNamespace=wiki%3Axwiki&xback=%2Fxwiki2%2Fbin%2Fdistribution%2FXWiki%2FDistribution%3Fflavor%3Dorg.xwiki.platform%3Axwiki-platform-distribution-flavor-mainwiki%3A%3A%3A15.10.10%26match%3D%7B%22id%22%3A%7B%22id%22%3A%22org.xwiki.platform%3Axwiki-platform-distribution-flavor-mainwiki%22%2C%22version%22%3A%7B%22type%22%3A%22STABLE%22%2C%22value%22%3A%2215.10.10%22%7D%7D%2C%22website%22%3A%22https%3A%2F%2Fextensions.xwiki.org%3Fid%3Dorg.xwiki.platform%3Axwiki-platform-distribution-flavor-mainwiki%3A15.10.10%3A%3A%3A%2Fxwiki-commons-pom%2Fxwiki-platform%2Fxwiki-platform-distribution%2Fxwiki-platform-distribution-flavor%2Fxwiki-platform-distribution-flavor-mainwiki%22%2C%22authors%22%3A%5B%7B%22name%22%3A%22XWiki%20Development%20Team%22%2C%22url%22%3Anull%2C%22urlstring%22%3Anull%7D%5D%2C%22rating%22%3Anull%2C%22summary%22%3A%22Default%20set%20of%20wiki%20pages%20containing%20both%20content%20and%20default%20applications%20for%20XWiki%20Flavor%20Main%20Wiki%22%2C%22name%22%3A%22XWiki%20Standard%20Flavor%22%2C%22type%22%3A%22xar%22%7D%26fieldName%3Dflavor%26xredirect%3D%2Fxwiki2%2Fbin%2Fview%2FMain%2F%26installFlavor%3DInstall%20this%20flavor] ERROR c.x.x.XWiki                    - Error while evaluating velocity template [distribution.vm]
org.xwiki.rendering.RenderingException: Failed to execute renderer
        at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:287)
        at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
        at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
        at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:904)
        at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:866)
        at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:846)
        at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:832)
        at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:91)
        at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:85)
        at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2565)
        at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:180)
        at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:651)
        at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:339)
        at com.xpn.xwiki.web.LegacyActionServlet.service(LegacyActionServlet.java:108)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
        at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:122)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
        at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:61)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
        at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
        at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
        at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
        at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1786)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.xwiki.rendering.RenderingException: Failed to evaluate template with id [environment:/templates/distribution.vm]
        at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:221)
        at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
        at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
        at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
        at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
        at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
        at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
        ... 54 common frames omitted
Caused by: org.xwiki.velocity.XWikiVelocityException: Failed to evaluate content with namespace [environment:/templates/distribution.vm]
        at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:227)
        at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:105)
        at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
        ... 60 common frames omitted
Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'startsWith' in  class sun.nio.fs.WindowsPath threw exception java.nio.file.InvalidPathException: Illegal char <:> at index 4: wiki: at environment:/templates/logging_macros.vm[line 120, column 24]
        at org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:308)
        at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:235)
        at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
        at org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReference.java:676)
        at org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpression.java:65)
        at org.apache.velocity.runtime.parser.node.ASTElseIfStatement.evaluate(ASTElseIfStatement.java:97)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:188)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.Foreach.renderBlock(Foreach.java:309)
        at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:279)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.Foreach.renderBlock(Foreach.java:309)
        at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:279)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
        at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.parser.node.ASTElseIfStatement.render(ASTElseIfStatement.java:108)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
        at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
        at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
        at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
        at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
        at org.apache.velocity.Template.merge(Template.java:358)
        at org.apache.velocity.Template.merge(Template.java:262)
        at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:225)
        ... 62 common frames omitted
Caused by: java.nio.file.InvalidPathException: Illegal char <:> at index 4: wiki:
        at java.base/sun.nio.fs.WindowsPathParser.normalize(Unknown Source)
        at java.base/sun.nio.fs.WindowsPathParser.parse(Unknown Source)
        at java.base/sun.nio.fs.WindowsPathParser.parse(Unknown Source)
        at java.base/sun.nio.fs.WindowsPath.parse(Unknown Source)
        at java.base/sun.nio.fs.WindowsFileSystem.getPath(Unknown Source)
        at java.base/java.nio.file.Path.startsWith(Unknown Source)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
        at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
        at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
        ... 160 common frames omitted
Reply

When exactly do you reproduce that ? Right after clicking “continue” after asking to install the flavor ?

It seems to be failing in the UI which display the log. Windows does not like too much that this code tries to check if a filesystem path is starting with “wiki:” (since : is invalid). This code is not actually aware that it’s a filesystem path, it just expects “startWith” to work only with a String, but it’s not the safest thing to expect and we should improve it. I just created Loading....

But the job should be running fine behind the scene. As a quick workaround you could go to the indicated template file (in templates/logging_macros.vm where the XWiki webapp is located), search for the lines (should be line 120)

    #elseif ($argument.startsWith('wiki:'))

and replace it with

    #elseif ($argument.toString().startsWith('wiki:'))