无效的流标头:通过java代码从数据库读取时,小程序中出现CAFEBABE异常

无效的流标头:通过java代码从数据库读取时,小程序中出现CAFEBABE异常,java,applet,jdbc-odbc,Java,Applet,Jdbc Odbc,我试图从数据库中获取一些信息,并将其显示在applet上。为此,我正在设置连接并通过另一个类获取数据,然后将其传输到小程序,但在小程序代码中,当我将inputstream设置到该类文件时,我将获得以下异常:- Exception Found :- java.io.StreamCorruptedException: invalid stream header: CAFEBABE java.io.StreamCorruptedException: invalid stream header: CAF

我试图从数据库中获取一些信息,并将其显示在applet上。为此,我正在设置连接并通过另一个类获取数据,然后将其传输到小程序,但在小程序代码中,当我将inputstream设置到该类文件时,我将获得以下异常:-

Exception Found :- java.io.StreamCorruptedException: invalid stream header: CAFEBABE
java.io.StreamCorruptedException: invalid stream header: CAFEBABE
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:806)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:299)
    at examapplet.init(examapplet.java:118)
    at sun.applet.AppletPanel.run(AppletPanel.java:434)
    at java.lang.Thread.run(Thread.java:745)
这是我的getLang课程

   import java.io.*;
   import javax.servlet.*;
   import javax.servlet.http.*;
   import java.sql.*;
   public class getLang extends HttpServlet
   {
   Connection con=null;
   Statement st=null;
   ResultSet rs=null;
   public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException
   {
    try
    {           
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con=DriverManager.getConnection("jdbc:odbc:online");
    st=con.createStatement();
    rs=st.executeQuery("select * from msubjectinfo");
    String lang="";
    while(rs.next())
    {
          lang+= rs.getString(2) + "@";
    }
    ObjectOutputStream oos=new ObjectOutputStream(res.getOutputStream());
    oos.writeObject(lang);
    }
    catch(Exception e)
    {
            System.out.println("Exception Found :--"+e);
    }
   }
   }

如何解决这个问题或告诉我检索字符串的其他方法???

看起来您正在使用ObjectInputStream而不是序列化字符串读取类文件。所有类文件都以32位数字0xCAFEBABE开头。如果您在浏览器中点击该URL,是否会得到预期的字符串?您是在容器中部署servlet吗?那么我如何从servlet到applet获取数据呢。还有别的办法吗?你可以做你所做的。但是只要确保使用servlet的URL,而不是getLang.class,它不是servlet的URL,而是class file.thx的URL,就可以解决我现在的困惑了
   import java.io.*;
   import javax.servlet.*;
   import javax.servlet.http.*;
   import java.sql.*;
   public class getLang extends HttpServlet
   {
   Connection con=null;
   Statement st=null;
   ResultSet rs=null;
   public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException
   {
    try
    {           
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con=DriverManager.getConnection("jdbc:odbc:online");
    st=con.createStatement();
    rs=st.executeQuery("select * from msubjectinfo");
    String lang="";
    while(rs.next())
    {
          lang+= rs.getString(2) + "@";
    }
    ObjectOutputStream oos=new ObjectOutputStream(res.getOutputStream());
    oos.writeObject(lang);
    }
    catch(Exception e)
    {
            System.out.println("Exception Found :--"+e);
    }
   }
   }