2014-06-06 3 views
7

मैं एक जावा वेब अनुप्रयोग विकसित कर रहा है जहाँ मैं इस परियोजना के उपकरण की तरह Maven का उपयोग कर रहा managmentand अब मैं इस समस्या के साथ पागल becaming कर रहा हूँ। मैं अपने आवेदन से एक Jasper रिपोर्ट बनाने के लिए प्रयास करते हैं, इस रिपोर्ट कई उप रिपोर्ट मैं src/मुख्य/संसाधनों में है से बना है। मैं निम्नलिखित तरीके से इन subreports लोड करने का प्रयास:java.io.StreamCorruptedException: अवैध धारा हैडर: EFBFBDEF

//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 

कहाँ हूँ मैं गलत कर रहा हूँ? मैं इसे कैसे ठीक कर सकता हूं?

उत्तर

23

अंत में सिर दर्द की 3 दिन के बाद मैं अपने मुसीबत को हल किया। मैं परियोजना प्रबंधन के उपकरण की तरह Maven उपयोग कर रहा हूँ और मैं इस संरचना

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

साथ एक मॉड्यूलर परियोजना पर काम कर रहा हूँ porblem कि फ़ाइल है कि मैं इनपुट धारा की तरह लोड करने का प्रयास src में था/मुख्य/सेवा मॉड्यूल में संसाधन, लेकिन वेब-ऐप के pom.xml में मैं संसाधन फ़िल्टरिंग सक्षम करता हूं, और चूंकि वह वेब-ऐप मॉड्यूल सेवा के आधार पर फ़िल्टरिंग को सेवा मॉड्यूल पर बढ़ाया गया था।

Maven वेब साइट Filtering की छानने खंड में मैंने पाया:

चेतावनी: छवियों की तरह द्विआधारी सामग्री के साथ फ़ाइलों को फ़िल्टर न करें! यह भ्रष्ट आउटपुट में सबसे अधिक संभावना परिणाम होगा। यदि आपके पास संसाधनों के रूप में टेक्स्ट फ़ाइलें और बाइनरी फ़ाइलें दोनों हैं, तो आपको दो परस्पर अनन्य संसाधन सेट घोषित करने की आवश्यकता है। पहले संसाधन समूह परिभाषित फ़ाइलें फ़िल्टर किया जा करने के लिए और अन्य संसाधन सेट जैसा कि नीचे बताया अनछुए कॉपी करने के लिए फ़ाइलों परिभाषित करता है:

तब मैं अपने वेब एप्लिकेशन मॉड्यूल से निम्नलिखित कोड को हटा दिया है और सब कुछ काम करता है

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
    </resource> 
</resources> 
2

इस समाधान के लिए धन्यवाद @skizzo

यदि आपको अभी भी कुछ अन्य फाइलों को फ़िल्टर करने की आवश्यकता है, या सभी फ़ाइलों की प्रतिलिपि बनाने के लिए एक कम कठोर तरीका है, तो आपको फ़िल्टर करने के लिए आवश्यक सभी फ़ाइलों को शामिल करना है (जावा, एक्सएमएल, गुण ...)।

यहाँ समाधान मैं बस आपकी मदद करने के लिए धन्यवाद लागू किया है:

 <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/*.java</include> 
       <include>**/*.xml</include> 
       <include>**/*.properties</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>false</filtering> 
      <excludes> 
       <exclude>**/*.java</exclude> 
       <exclude>**/*.xml</exclude> 
       <exclude>**/*.properties</exclude> 
      </excludes> 
     </resource> 
    </resources> 

यह सब पर संबंधित लग रहा था नहीं था, और मैं पहले से ही कई घंटे के लिए इसके लिए देख रहा था। यह वास्तव में मेरे दिन बचाया! ;-)

0

मेरे मामले में, मैं रेखा निर्धारण चींटी कार्य के अंत से संकलित Jasper रिपोर्ट को बाहर करने के भूल गया। मेरे लिए बहिष्कार नीचे समस्या का समाधान हो:

<fixcrlf srcdir="${basedir}/target/etc" 
    includes="**/*.*" 
    excludes="**/*.jasper" 
    eol="lf" eof="remove"/> 
1

मैं बिल्कुल वैसा ही समस्या थी, मैं अपने में pom.xml निम्न प्लग-इन जोड़ने हल किया गया था

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>3.0.2</version> 
      <configuration> 
       <nonFilteredFileExtensions> 
       <nonFilteredFileExtension>pdf</nonFilteredFileExtension> 
       <nonFilteredFileExtension>jasper</nonFilteredFileExtension> 
       </nonFilteredFileExtensions> 
      </configuration> 
      </plugin>