首页 文章

java.lang.IllegalArgumentException:URI不是分层的(在已部署的应用程序中)

提问于
浏览
0

我已将我的应用程序部署到jar文件 . 我想在我的应用程序的资源文件夹中生成和存储PDF,Everything在开发中对我有用,但是当我部署时,我在实时应用程序中遇到错误

以下是我的代码

URL url = this.getClass().getResource("/templates");
        parentDirectory = new File(new URI(url.toString()));
        OutputStream outputStream = new FileOutputStream(parentDirectory.toString()+"/"+quoteNumber+".pdf");

当我从Eclips运行我的应用程序但是我在服务器中部署应用程序WAR文件时,一切正常并且成功创建了PDf文件我收到此错误

我的错误完整日志如下

2018-03-09 18:23:31.033 ERROR 6 --- [XNIO-2 task-13] ozpspring.web.advice.AdviceTrait:内部服务器错误java.lang.IllegalArgumentException:URI在java.io中不是分层的.File . (File.java:418)at com.beequote.web.rest.QuotebuilderResource.Quote(QuotebuilderResource.java:338)at com.beequote.web.rest.QuotebuilderResource $$ FastClassBySpringCGLIB $$ 7c210806.invoke()at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)位于org.springframework.aop.framework.ReflectiveMethodInvocation的org.springframework.aop.framework.CglibAopProxy $ CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738) . 在com.ryantenney的com.ryantenney.metrics.spring.TimedMethodInterceptor.invoke(TimedMethodInterceptor.java:48)的com.ryantenney.metrics.spring.TimedMethodInterceptor.invoke(TimedMethodInterceptor.java:34)中继续(ReflectiveMethodInvocation.java:157) org.springframew上的.metrics.spring.AbstractMetricMethodInterceptor.invoke(AbstractMetricMethodInterceptor.java:59) ork.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)org.springframework.aop.framework.CglibAopProxy $ DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)at com.beequote.web.rest.QuotebuilderResource $$ EnhancerBySpringCGLIB来自sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)的sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)中的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)中的$ c16579cf.Quote()at at java.lang.reflect.Method.invoke(Method.java:498)位于org.springframework.web.method.support.InvocableHandlerMethod的org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) . 在org.springframework.web.servlet.mvc.method.annotation.Reques上的org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)中的invokeForRequest(InvocableHandlerMethod.java:133) tMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)位于org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter的org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) . org.springframework上的org.springframework.web.servlet.Dispatcher服务中提供了Org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)org.springframework上的句柄(AbstractHandlerMethodAdapter.java:85)位于org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)的.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970),位于javax.servlet.http.HttpServlet.service(HttpServlet.java:687) )org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)at io.undertow.servlet.handlers.ServletHandler.handleRequest( ServletHandler.java: 85)at io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter(FilterHandler.java:129)at com.codahale.metrics.servlet.AbstractInstrumentedFilter.doFilter(AbstractInstrumentedFilter.java:111)at io.undertow.servlet.core位于org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java)的io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter(FilterHandler.java:131)中的.ManagedFilter.doFilter(ManagedFilter.java:61) :59)在oro.springframework.boot的io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)的io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter(FilterHandler.java:131) . 在.o.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java: 61)在io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter(FilterHandler.java:131)位于io.undertow.servlet.core.ManagedFilter的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) . doFilter(ManagedFilter.java:61)位于org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)的io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)at io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl .doFilter(FilterHandler.java:131)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:317)org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java) :127)在org.springframework.security.web.a位于org.springframework.security.web.access.ExceptionTranslationFilter.doFilter的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)中的ccess.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) ExceptionTranslationFilter.java:114)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)at org .springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)位于org.springframework.security.web.FilterChainProxy的org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareReq) uestFilter.java:170)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)at org .springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)at com.beequote.security.jwt.JWTFilter.doFilter(JWTFilter.java:36)at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain .doFilter(FilterChainProxy.java:331)org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org . springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)位于org.springframework.security.web的org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) . 的FilterChainProxy $ VirtualFilterChain.doFilter(Filt员工erChainProxy.java:331)org.springframework上的org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.security.web.FilterChainProxy $ VirtualFilterChain上的.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) .doFilter(FilterChainProxy.java:331)org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java) :107)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterC) hainProxy.java:214)在org.springframework.web的org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347) .filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)at io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter(FilterHandler.java) :131)在org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)atg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at io.undertow.servlet.core.ManagedFilter.doFilter( ManagedFilter.java:61)在org.springframework的org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108)的io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter(FilterHandler.java:131)位于io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)的.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter(FilterHandler) .java:131)atg.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)atg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at io.undertow.servlet . core.ManagedFilter.doFilter(ManagedFil ter.java:61)在org.springframework的org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)的io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter(FilterHandler.java:131)位于io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)的.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter(FilterHandler) .java:131)io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)at io.undertow的io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) . servlet.handlers.ServletChain $ 1.handleRequest(ServletChain.java:64)at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler)的.java:13 1)在io.undertow.security.handlers.handlers上的io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)的io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) .AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)at io.undertow.servlet.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60 )io.undertow.servlet.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)at io.undertow.server.handlers . 在io.undertow.server.handlers.Predic的PredicateHandler.handleRequest(PredicateHandler.java:43) ateHandler.handleRequest(PredicateHandler.java:43)at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)at io.undertow.servlet.handlers.ServletInitialHandler.access $ 100(ServletInitialHandler.java:81)at io.undertow.servlet.handlers.ServletInitialHandler $ 2.call(ServletInitialHandler.java:138)at io.undertow.servlet.handlers.ServletInitialHandler $ 2.call(ServletInitialHandler.java:135)at io.undertow.servlet.core.ServletRequestContextThreadSetupAction $ 1 .call(ServletRequestContextThreadSetupAction.java:48)at io.undertow.servlet.core.ContextClassLoaderSetupAction $ 1.call(ContextClassLoaderSetupAction.java:43)at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)at io .undertow.servlet.handlers.ServletInitialHandler.access $ 000(ServletInitialHandler.java:81)位于io.undertow.server.Connectors.exe的io.undertow.servlet.handlers.ServletInitialHandler $ 1.handleRequest(ServletInitialHandler.java:104) cuteRootHandler(Connectors.java:332)位于java.util.concurrent的java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)的io.undertow.server.HttpServerExchange $ 1.run(HttpServerExchange.java:830) . ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)

2 回答

  • 0

    你应该使用

    getResourceAsStream(...);
    

    当资源被捆绑为jar / war或任何其他单个文件包时 .

    看到的是,jar是单个文件(有点像拉链文件)将大量文件放在一起 . 从Os的pov,它是一个单独的文件,如果你想访问文件的一部分(你的图像文件),你必须将它用作流

  • 0

    用_创建 OutputStream

    OutputStream os = this.getClass()
        .getClassLoader()
        .getResourceAsStream("/templates/" + quoteNumber + ".pdf");
    

    您希望将pdf存储在jar中,这与在使用OS文件系统的本地环境(例如使用Eclipse)中运行时不同 .

相关问题