相关疑难解决方法(0)

java.io.StreamCorruptedException:无效的流标头:7371007E

我有一个客户端服务器应用程序使用对象进行通信
当我只从客户端向服务器发送一个对象时,一切正常.
当我尝试在同一个流上一个接一个地发送几个对象时,我得到了

StreamCorruptedException.  
Run Code Online (Sandbox Code Playgroud)

有人可以指导我这个错误的原因吗?

客户端写方法

   private SecMessage[] send(SecMessage[] msgs) 
   {
     SecMessage result[]=new SecMessage[msgs.length];
      Socket s=null;
      ObjectOutputStream objOut =null;
      ObjectInputStream objIn=null;
      try
      {
       s=new Socket("localhost",12345);
       objOut=new ObjectOutputStream( s.getOutputStream());
       for (SecMessage msg : msgs) 
       {
            objOut.writeObject(msg);
       }
       objOut.flush();
       objIn=new ObjectInputStream(s.getInputStream());
       for (int i=0;i<result.length;i++)
            result[i]=(SecMessage)objIn.readObject();
      }
      catch(java.io.IOException e)
      {
       alert(IO_ERROR_MSG+"\n"+e.getMessage());
      } 
      catch (ClassNotFoundException e) 
      {
       alert(INTERNAL_ERROR+"\n"+e.getMessage());
      }
      finally
      {
       try {objIn.close();} catch (IOException e) {}
       try {objOut.close();} catch (IOException e) {}
      }
      return result;
 }
Run Code Online (Sandbox Code Playgroud)

服务器读取方法

//in is an inputStream Defined in …
Run Code Online (Sandbox Code Playgroud)

java io serialization

20
推荐指数
1
解决办法
11万
查看次数

Java无效流头问题

我写了一个客户端 - 服务器应用程序,现在我面临一个我不知道如何解决的问题:

这是客户:

try
        {

            Socket socket = new Socket(ip, port);


            ObjectOutputStream ooos = new ObjectOutputStream(socket
                    .getOutputStream());
            SendMessage message = new SendMessage();

            message.numDoc = value.numDoc;
            message.docFreq = value.docFreq;

            message.queryTerms = query;
            message.startIndex = startIndex;
            message.count = count;
            message.multiple = false;
            message.ips = null;
            message.ports = null;

            message.value = true;
            message.docFreq = value.docFreq;
            message.numDoc = value.numDoc;
            ooos.writeObject(message);


            ObjectInputStream ois = new ObjectInputStream(socket
                    .getInputStream());
            ComConstants mensajeRecibido;
            Object mensajeAux;
            String mensa = null;

            byte[] by = null;

            do
            {

                mensajeAux = ois.readObject(); …
Run Code Online (Sandbox Code Playgroud)

java serialization exception stream

9
推荐指数
1
解决办法
5万
查看次数

java.io.StreamCorruptedException:无效的流标头:30313031

这与 Hibernate:无法反序列化 - 无效流标头有关

我无法真正利用这些答案,所以我再次创建了这个(也许事情已经发生了一些变化)。

我正在构建一个 SpringBoot 应用程序,这里是我使用的库。

org.springframework.boot:1.5.4.RELEASE
hibernate-core:5.0.12
hibernate-spatial
hibernate-jpa-2.1-api:1.0.0
postgis-jdbc:2.2.1
postgresql:42.1.4
Run Code Online (Sandbox Code Playgroud)

声明我的实体的代码

package be.naturalsciences.tiles.model;

/**
 *
 * @author michel
 */

import org.postgis.Point;

import java.io.Serializable;
import java.math.BigDecimal;
import javax.persistence.Basic;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

@Entity
@Table(schema = "idod", name = "coordinates")
@XmlRootElement
public class SCoordinates {
    @Id
    @Basic(optional = false)
    @Column(name = "theid")
    public Integer id;

@Basic(optional = false)
    @Column(name = "latitude")
    public BigDecimal latitude;

@Basic(optional = false)
    @Column(name = …
Run Code Online (Sandbox Code Playgroud)

java gis hibernate postgis

4
推荐指数
1
解决办法
1万
查看次数

java.io.StreamCorruptedException:无效的流标头:4920616D

嗨,当我试图读取blob得到异常。正在发布如何写入DB并获得对DB的友好建议,这导致了太多问题。

ava.io.StreamCorruptedException: invalid stream header: 4920616D
                at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:782)
                at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279)
                at com.jiit.jfx.persistence.TypeHelper.readBlob(TypeHelper.java:137)
                at com.jiit.jfx.persistence.TypeHelper.get(TypeHelper.java:84)
                at com.jiit.jfx.persistence.dataaccess.OracleSQLQuery.get(OracleSQLQuery.java:116)
                at com.jiit.jfx.persistence.dataaccess.OracleSQLQuery.doOperation(OracleSQLQuery.java:65)
                at com.jiit.jfx.persistence.dataaccess.AbstractDAO.execute(AbstractDAO.java:181)
                at com.jiit.jfx.persistence.dataaccess.AbstractDAO.executeSQL(AbstractDAO.java:208)
                at 

com.jiit.ngcs.mx.server.model.rail.ASMMessageStore.getASMMessageStore(ASMMessageStore.java:196)




    enter code here

    Reading BOLB :

        public static Blob createBlob(Object serializable) throws PersistenceException{
            try {
                ByteArrayOutputStream bStream = new ByteArrayOutputStream();
                ObjectOutputStream oStream = new ObjectOutputStream(bStream);
                oStream.writeObject(serializable);
                oStream.flush();
                oStream.close();
                return createBlob(bStream.toByteArray());
            } catch (Exception e) {
                throw new PersistenceException(e.getMessage());
            }
        }
        in TypeHelper.java -- > createBlob


        private static Object readBlob(int index, ResultSet rs) throws SQLException {
            try …
Run Code Online (Sandbox Code Playgroud)

java file-io jdbc

1
推荐指数
1
解决办法
2613
查看次数

标签 统计

java ×4

serialization ×2

exception ×1

file-io ×1

gis ×1

hibernate ×1

io ×1

jdbc ×1

postgis ×1

stream ×1