java.io.StreamCorruptedException:无效的流头:EFBFBDEF

2024-01-05

我正在开发一个java web应用程序,我在其中使用类似于maven的项目管理工具,现在我对这个问题变得疯狂。 我尝试从我的应用程序构建一个 jasper 报告,该报告由 src/main/resources 中的许多子报告组成。 我尝试通过以下方式加载这些子报表:

//Sub Report 1 
InputStream fileSubRep1=(BufferedInputStream) getClass().getResourceAsStream("/fileSubReport1.jasper");
map.put("fileSubRep1",(JasperReport) JRLoader.loadObject(fileSubRep1));

//Sub Report 2 
InputStream fileSubRep2=(BufferedInputStream) getClass().getResourceAsStream("/fileSubReport2.jasper");
map.put("fileSubRep1",(JasperReport) JRLoader.loadObject(fileSubRep2));

问题是这个方法的调用JRLoader.loadObject(fileSubRep1)生成以下异常:

        net.sf.jasperreports.engine.JRException: Error loading object from InputStream
    at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:248)
    at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:228)
    at it.aiemonline.report.jasper.GeneraFattureServiceImpl.createMapFileJasper(GeneraFattureServiceImpl.java:292)
    at it.aiemonline.report.jasper.GeneraFattureServiceImpl.executeStreamByteFatturaPdf(GeneraFattureServiceImpl.java:890)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
    at it.aiemonline.utility.logger.SystemLogger.aroundExecuteLog(SystemLogger.java:187)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
    at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
    at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy78.executeStreamByteFatturaPdf(Unknown Source)
    at it.aiemonline.vaadin.application.gui.fatturazione.visualizza.VisualizzaFatturaPanel.visualizzaPdf(VisualizzaFatturaPanel.java:236)
    at it.aiemonline.vaadin.application.gui.fatturazione.visualizza.VisualizzaFatturaPanel$1.itemClick(VisualizzaFatturaPanel.java:109)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508)
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198)
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161)
    at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:969)
    at com.vaadin.ui.Table.handleClickEvent(Table.java:3057)
    at com.vaadin.ui.Table.changeVariables(Table.java:2853)
    at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:396)
    at com.vaadin.server.communication.ServerRpcHandler.handleBurst(ServerRpcHandler.java:221)
    at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:111)
    at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:91)
    at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
    at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1382)
    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:538)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:478)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:937)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:871)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
    at org.eclipse.jetty.server.Server.handle(Server.java:346)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:589)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1065)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:823)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:220)
    at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:411)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:535)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.StreamCorruptedException: invalid stream header: EFBFBDEF
    at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
    at java.io.ObjectInputStream.<init>(Unknown Source)
    at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:58)
    at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:243)
    ... 69 more

我哪里做错了? 我该如何修复它?


经过三天的头痛,我终于解决了我的问题。我正在使用类似 Maven 的项目管理工具,并且正在开发具有这种结构的模块化项目

|-- parent
   |-- model
    --pom.xml
   |-- services
    --pom.xml
   |-- web-app
    --pom.xml

问题是我尝试像输入流一样加载的文件位于服务模块中的 src/main/resources 中,但在 Web 应用程序的 pom.xml 中我启用了资源过滤,并且由于该 Web 应用程序模块依赖于服务的过滤在服务模块中得到扩展。

在 Maven 网站的过滤部分过滤 http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html我发现:

Warning:不要过滤具有二进制内容(例如图像)的文件!这很可能会导致输出损坏。如果您同时拥有文本文件和二进制文件作为资源,则需要声明两个互斥的资源集。第一个资源集定义要过滤的文件,另一个资源集定义要复制而不更改的文件,如下所示:

然后我从我的网络应用程序模块中删除了以下代码,一切正常

<resources>
     <resource>
         <directory>src/main/resources</directory>
         <filtering>true</filtering>
    </resource>
</resources>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.io.StreamCorruptedException:无效的流头:EFBFBDEF 的相关文章

随机推荐

  • AngularJS:如何使用自定义 HTML 将 ui-grid 数据导出到 Excel?

    与此链接相关 AngularJS 如何将 ui grid 数据导出到 Excel https stackoverflow com questions 40265774 angularjs how to export ui grid data
  • 将 AngularJS 表单发送到 NodeMailer 以发送电子邮件

    我使用 AngularJS 在模态实例中构建了一个电子邮件表单 其中包含发送电子邮件 收件人电子邮件 主题和电子邮件内容的字段 该表单使用输入框和 ng models 来跟踪数据 当用户点击此表单上的发送按钮时 我想将模型收集的所有信息发送
  • Python 中的不可变列表

    我试图制作一个在整个应用程序中使用的不可变列表 我认为将这个列表包装在一个元组中可以解决问题 但似乎tuple list 实际上并不换行 而是复制列表元素 gt gt gt a 1 2 3 4 gt gt gt b tuple a gt g
  • 如何检测和删除(在会话期间)无法进行垃圾收集的未使用的 @ViewScoped beans

    编辑 这个问题提出的问题在 codebulb ch 的这篇文章中得到了很好的解释和证实 包括 JSF 之间的一些比较 ViewScoped CDI ViewSCoped 以及全能面孔 ViewScoped 并明确声明 JSF ViewSco
  • opengl:glFlush() 与 glFinish()

    我无法区分调用之间的实际区别glFlush and glFinish 文档说glFlush and glFinish 将把所有缓冲操作推送到 OpenGL 以便可以确保它们都会被执行 区别在于glFlush 立即返回 其中glFinish
  • 不使用扫描仪在控制台中获取用户输入

    我想知道使用其他类从用户那里获取输入的其他方法BufferedReader等而不是使用 Scanner 类 那么 还有其他方式获取用户的输入吗 如果是这样 它比Scanner class 如果您使用的是 Java SE6 或更高版本 那么您
  • netbeans 无法解析标识符 c_str

    大家好 我最近从 Qt Creator 切换到 NetBeans 我对这个决定感到遗憾 这是我遇到的有关编译器错误等的最新 许多 问题 上期及MinGW64编译器安装 https stackoverflow com questions 41
  • 在运行时在 Windows 窗体上找到 ErrorProvider

    我正在制作一个扩展方法库以在 Windows 窗体应用程序中使用 我打算创建的方法之一将使在输入控件上设置错误状态变得更容易 例如 public static void SetError this System Windows Forms
  • Google Maps Android API V2 遮蔽了部分布局

    我正在尝试将 Google Maps Android API v2 集成到我的 Android 应用程序中 我将 Google 地图放在布局的中间 当布局能够适合屏幕时它效果很好 但是当布局太大而无法容纳并且用户向下滚动以查看其余内容时 布
  • Jquery:当用户单击除该 div 之外的任何内容时如何隐藏该 div。无叠加

    我在想 one在这种情况下会有用吗 但我不知道该怎么做 当我单击搜索链接时 会出现一个搜索框 我希望用户能够单击该 div 中的任何内容而不关闭它 但是当用户单击该 div 之外的任何内容时 div 就会淡出 嗯 这是一个example h
  • 使用数组的矩阵乘法

    我正在尝试使用多维数组创建一个简单的矩阵乘法方法 2 2 我对此有点陌生 我只是找不到我做错了什么 如果有人帮助我告诉我它是什么 我真的很感激 我不想使用库或类似的东西 我这样做主要是为了了解它是如何工作的 预先非常感谢您 我在 main
  • 更新并返回 Mongodb 中的文档

    我想要获取更新的文档 这是我的原始代码 它成功更新但不返回文档 collection update code req body code set req body updatedFields function err results res
  • Django - 在将文本保存到数据库之前如何修改文本?

    我想输入类似的内容 通过管理页面 text t es t 并将它们另存为 test 在数据库上 我使用这个正则表达式来修改它们 re sub r 1 1 r 1 2 3 text 我知道如何转换文本 t es t to test 但问题是
  • 无法获得 html div 元素周围的边框

    我不明白为什么我的 div 周围没有边框 我的jsfiddle是 http jsfiddle net 4HnKs 1 http jsfiddle net 4HnKs 1 我一定是因为盯着电脑屏幕而疯了 但如果你看看课堂上的情况vertica
  • 如何在 C++ 中将数组的内容复制到 std::vector 而不循环?

    我有一个值数组 它从程序的不同部分传递到我的函数 我需要存储这些值以供以后处理 由于我不知道在处理数据之前我的函数会被调用多少次 所以我需要一个动态存储结构 所以我选择了一个std vector 我不想必须执行标准循环push back所有
  • Jshint.com |分配给'this'

    每当我这样做时都会在 jshint com 上 var this hold this 我收到一个错误 我收到违反严格错误 该应用程序是这样的 我需要使用 this 从事件处理程序传入 或者我需要使用自己拉取元素document getEle
  • C++ 11 模板,参数包的别名

    在个人项目中我有这样的事情 template
  • Kendo Grid 的动态默认值

    我想要一个auto increment我的剑道网格中的列 该字段不是服务器端自动增量 因为我希望用户看到该值并能够更改它 我当前的解决方案是添加一个click归因于Create按钮并循环遍历行以找到最高值并递增它 但是如何将该值插入到新创建
  • std::map 在 [] 上调用默认构造函数,在 insert() 上调用复制构造函数

    我的 std map 称为uniformBlocks 当我注意到一些奇怪的事情时 我正在测试添加新元素的方法 当我使用以下方法添加新的键 值对时 uniformBlocks MatrixBlock matrixBlock 调用默认构造函数
  • java.io.StreamCorruptedException:无效的流头:EFBFBDEF

    我正在开发一个java web应用程序 我在其中使用类似于maven的项目管理工具 现在我对这个问题变得疯狂 我尝试从我的应用程序构建一个 jasper 报告 该报告由 src main resources 中的许多子报告组成 我尝试通过以