Closed
Description
The stack trace below is logged, if our spring boot application is started in a path that contains for example '('.
The stack we are using is: thymeleaf together with webjars+jetty
Spring-Boot version: 3.2.4
Caused by: java.io.IOError: java.net.URISyntaxException: Illegal character in path at index 29: nested:/C:/DEV-Install/testaa tst (x86)/service-manager/apps/gateway/gateway-app.jar/!BOOT-INF/lib/i18next-1.11.5.jar
at org.springframework.boot.loader.nio.file.NestedPath.toUri(NestedPath.java:148)
at jdk.zipfs/jdk.nio.zipfs.ZipPath.toUri(ZipPath.java:201)
at org.eclipse.jetty.util.resource.FileSystemPool.mount(FileSystemPool.java:131)
at org.eclipse.jetty.util.resource.ResourceFactoryInternals$CompositeResourceFactory.mountIfNeeded(ResourceFactoryInternals.java:268)
at org.eclipse.jetty.util.resource.ResourceFactoryInternals$CompositeResourceFactory.newResource(ResourceFactoryInternals.java:225)
at org.eclipse.jetty.util.resource.ResourceFactoryInternals$LifeCycle.newResource(ResourceFactoryInternals.java:171)
at org.eclipse.jetty.util.resource.ResourceFactory.newResource(ResourceFactory.java:370)
at org.eclipse.jetty.ee10.servlet.ServletContextHandler$ServletContextApi.getResourceAsStream(ServletContextHandler.java:2834)
at org.springframework.web.context.support.ServletContextResource.isReadable(ServletContextResource.java:120)
at org.springframework.web.servlet.resource.PathResourceResolver.getResource(PathResourceResolver.java:190)
at org.springframework.web.servlet.resource.PathResourceResolver.getResource(PathResourceResolver.java:159)
at org.springframework.web.servlet.resource.PathResourceResolver.resolveUrlPathInternal(PathResourceResolver.java:149)
at org.springframework.web.servlet.resource.AbstractResourceResolver.resolveUrlPath(AbstractResourceResolver.java:53)
at org.springframework.web.servlet.resource.DefaultResourceResolverChain.resolveUrlPath(DefaultResourceResolverChain.java:82)
at org.springframework.web.servlet.resource.WebJarsResourceResolver.resolveUrlPathInternal(WebJarsResourceResolver.java:96)
at org.springframework.web.servlet.resource.AbstractResourceResolver.resolveUrlPath(AbstractResourceResolver.java:53)
at org.springframework.web.servlet.resource.DefaultResourceResolverChain.resolveUrlPath(DefaultResourceResolverChain.java:82)
at org.springframework.web.servlet.resource.CachingResourceResolver.resolveUrlPathInternal(CachingResourceResolver.java:172)
at org.springframework.web.servlet.resource.AbstractResourceResolver.resolveUrlPath(AbstractResourceResolver.java:53)
at org.springframework.web.servlet.resource.DefaultResourceResolverChain.resolveUrlPath(DefaultResourceResolverChain.java:82)
at org.springframework.web.servlet.resource.ResourceUrlProvider.getForLookupPath(ResourceUrlProvider.java:245)
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper.resolveUrlPath(ResourceUrlEncodingFilter.java:126)
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingResponseWrapper.encodeURL(ResourceUrlEncodingFilter.java:159)
at org.thymeleaf.web.servlet.JakartaServletWebExchange.transformURL(JakartaServletWebExchange.java:124)
at org.thymeleaf.linkbuilder.StandardLinkBuilder.processLink(StandardLinkBuilder.java:547)
at org.thymeleaf.linkbuilder.StandardLinkBuilder.buildLink(StandardLinkBuilder.java:138)
at org.thymeleaf.context.AbstractEngineContext.buildLink(AbstractEngineContext.java:167)
at org.thymeleaf.standard.expression.LinkExpression.executeLinkExpression(LinkExpression.java:292)
at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:85)
at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109)
at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138)
at org.thymeleaf.standard.processor.AbstractStandardExpressionAttributeTagProcessor.doProcess(AbstractStandardExpressionAttributeTagProcessor.java:144)
at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74)
at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95)
at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633)
at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314)
at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205)
at org.thymeleaf.engine.TemplateModel.process(TemplateModel.java:136)
at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:592)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1103)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1077)
at org.thymeleaf.spring6.view.ThymeleafView.renderFragment(ThymeleafView.java:372)
at org.thymeleaf.spring6.view.ThymeleafView.render(ThymeleafView.java:192)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1431)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1167)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106)
... 146 common frames omitted
Caused by: java.net.URISyntaxException: Illegal character in path at index 29: nested:/C:/DEV-Install/testaa tst (x86)/service-manager/apps/gateway/gateway-app.jar/!BOOT-INF/lib/i18next-1.11.5.jar
at java.base/java.net.URI$Parser.fail(URI.java:2974)
at java.base/java.net.URI$Parser.checkChars(URI.java:3145)
at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3227)
at java.base/java.net.URI$Parser.parse(URI.java:3175)
at java.base/java.net.URI.<init>(URI.java:623)
at org.springframework.boot.loader.nio.file.NestedPath.toUri(NestedPath.java:145)
... 191 common frames omitted