无效的流标头:通过java代码从数据库读取时,小程序中出现CAFEBABE异常
我试图从数据库中获取一些信息,并将其显示在applet上。为此,我正在设置连接并通过另一个类获取数据,然后将其传输到小程序,但在小程序代码中,当我将inputstream设置到该类文件时,我将获得以下异常:-无效的流标头:通过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
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);
}
}
}