Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 序列化列表<;BuffereImage>;在包含我的所有对象的文件中_Java_Image_Nullpointerexception_Awt - Fatal编程技术网

Java 序列化列表<;BuffereImage>;在包含我的所有对象的文件中

Java 序列化列表<;BuffereImage>;在包含我的所有对象的文件中,java,image,nullpointerexception,awt,Java,Image,Nullpointerexception,Awt,我正在尝试序列化BuffereImage的列表 案例解读:- List <BufferedImage> = new ArrayList<BufferedImage>(); public void serialize() { getDraftApp().getSerializeImages().add(ImageIO.read(new ByteArrayInputStream(read(image)))); try {

我正在尝试序列化BuffereImage的列表 案例解读:-

List <BufferedImage> = new ArrayList<BufferedImage>();
        public void serialize()
    {
       getDraftApp().getSerializeImages().add(ImageIO.read(new 
       ByteArrayInputStream(read(image))));
try {
            String path = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/")+"Applications"+"\\"+getsHandler().getDraftApp().getAppId()+"-"+getsHandler().getDraftApp().getAppVersion()+"\\"+"app.proj";
            FileOutputStream fileOut = new FileOutputStream(path);
            System.out.println("Data is saved in : "+getsHandler().getDraftApp().getPath());
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(getsHandler().getDraftApp());
            out.close();
            fileOut.close();
            System.out.printf("Serialized data is saved!");
        } catch (IOException i) {
            i.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
            Logger.getLogger(ObjectManagements.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
        }
            public byte[] read(File file) throws IOException {
            ByteArrayOutputStream ous = null;
            InputStream ios = null;
            try {
                byte[] buffer = new byte[4096];
                ous = new ByteArrayOutputStream();
                ios = new FileInputStream(file);
                int read = 0;
                while ((read = ios.read(buffer)) != -1) {
                    ous.write(buffer, 0, read);
                }
            }finally {
                try {
                    if (ous != null)
                        ous.close();
                } catch (IOException e) {
                }

                try {
                    if (ios != null)
                        ios.close();
                } catch (IOException e) {
                }
            }
            return ous.toByteArray();
        }
“实际上,我不知道文件是否保存了我的列表”,但当我尝试反序列化时,我得到了NullPointerException,因为我的列表返回null 案例写作:-

public MdapApplication DeserializeApp(SessionHandler Sbean , String Path) {
        setsHandler(Sbean);
        try {
            FileInputStream fileIn = new FileInputStream(Path +"\\"+ "app.proj");            
            ObjectInputStream in = new ObjectInputStream(fileIn);
            MdapApplication DF = (MdapApplication) in.readObject();
            in.close();
            fileIn.close();
            return DF;
        } catch (IOException i) {
            i.printStackTrace();
            return null;
        } catch (ClassNotFoundException c) {
            System.out.println("Application class not found");
            c.printStackTrace();
            return null;
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }
然后我从文件中获取对象

日志


我搜索了两天,没有发现任何东西,顺便说一句“我的列表可能包含png jpg”

如果文件大小小于1000,您不创建
ByteArrayOutputStream
,因此
ous.toByteArray()
将抛出NPE


很明显。

是什么在扔NPE?显示堆栈trace.in for(BuffereImage eachImage:getsHandler().getDraftApp().getSerializeImages())…反序列化时的列表NPE停止在注释部分向我们扔碎屑。请在您的帖子中包含任何相关信息。NPE位于
Beans.HomeScreenBean.deserializeImages(HomeScreenBean.java
第271行。您还没有发布这方面的代码。我在序列化时没有问题,在反序列化BuffereImage列表时我的问题返回null我不知道为什么!我指的代码在
公共字节[]读取(…)
。你自己肯定能看到吗?这是反序列化代码,而不是序列化代码。顺便说一句,我尝试在同一个函数中序列化和反序列化“仅用于测试”,但没有将其保存在一个文件中。我使用byte[]read(..)读取“序列化”图像,然后将其添加到列表中,如getSerializeImages()。添加(ImageIO.read(新ByteArrayInputStream(read(image));当我打印内容时,它会工作(每个页面:BufferedImage@3b7a74c6:type=5 ColorModel:#像素位…)
public MdapApplication DeserializeApp(SessionHandler Sbean , String Path) {
        setsHandler(Sbean);
        try {
            FileInputStream fileIn = new FileInputStream(Path +"\\"+ "app.proj");            
            ObjectInputStream in = new ObjectInputStream(fileIn);
            MdapApplication DF = (MdapApplication) in.readObject();
            in.close();
            fileIn.close();
            return DF;
        } catch (IOException i) {
            i.printStackTrace();
            return null;
        } catch (ClassNotFoundException c) {
            System.out.println("Application class not found");
            c.printStackTrace();
            return null;
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }
 MdapApplication temp = obm.DeserializeApp(getsHandler(), amfFile.getPath());
    getDraftApp() = temp;
for (BufferedImage eachImage : getsHandler().getDraftApp().getSerializeImages() ) {
            System.out.println("eachImage : "+eachImage);
            ImageIO.write(eachImage, "png", new File(getsHandler().getDraftApp().getPath() +"\\"+ "myImage.png")); // png is lossless
        }
25-Aug-2017 03:48:24.266 WARNING [http-nio-8084-exec-790]
com.sun.faces.lifecycle.InvokeApplicationPhase.execute #{apps.modify(mdapApp)}: java.lang.NullPointerException
javax.faces.FacesException: #{apps.modify(mdapApp)}: java.lang.NullPointerException
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIData.broadcast(UIData.java:1108)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:70)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745) Caused by:
javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
... 35 more Caused by: java.lang.NullPointerException
at Beans.HomeScreenBean.deserializeImages(HomeScreenBean.java:271)
at Beans.HomeScreenBean.modify(HomeScreenBean.java:301)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
... 36 more

25-Aug-2017 03:48:24.353 SEVERE [http-nio-8084-exec-790]
com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError
javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIData.broadcast(UIData.java:1108)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:70)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by:
java.lang.NullPointerException
at Beans.HomeScreenBean.deserializeImages(HomeScreenBean.java:271)
at Beans.HomeScreenBean.modify(HomeScreenBean.java:301)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
... 36 more