当前位置: 技术问答>java相关
Socket中使用Serializable发送出错。
来源: 互联网 发布时间:2015-07-13
本文导语: 1、 Socket中使用Serializable如下: 发送端: CMessage myMsg=new CMessage(); myMsg.parType=1; OutputStream os=mySocket .getOutputStream(); ObjectOutputStream out = new ObjectOutputStream(o...
1、
Socket中使用Serializable如下:
发送端:
CMessage myMsg=new CMessage();
myMsg.parType=1;
OutputStream os=mySocket .getOutputStream();
ObjectOutputStream out = new ObjectOutputStream(os);
out.writeObject(myMsg); //myMsg为自己定的的串化类
out.flush();
接收端:
try{
InputStream in=mySocket.getInputStream();
ObjectInputStream br = new ObjectInputStream(in);
CMessage str=(CMessage)br.readObject() ; //这条语句时出错
}catch(Exception){
}
不知原因为何?大家请帮看看哪里是否有写错?
public class CMessage implements java.io.Serializable{
public int parType=0; //父类型
public CMessage() {
}
}
2、在JB4的应用程序中使用jdbc,总会初始化不成功,而用计事本写的则没有问题,是何原因?且编译后使用java application也不能运行程序,报错如下:
C:tomcatwebappsROOTchat_2.0Serverclassesserver>java Server
Exception in thread "main" java.lang.NoClassDefFoundError: Server (wrong name: s
erver/Server)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
兄弟们可有解决方法?
Socket中使用Serializable如下:
发送端:
CMessage myMsg=new CMessage();
myMsg.parType=1;
OutputStream os=mySocket .getOutputStream();
ObjectOutputStream out = new ObjectOutputStream(os);
out.writeObject(myMsg); //myMsg为自己定的的串化类
out.flush();
接收端:
try{
InputStream in=mySocket.getInputStream();
ObjectInputStream br = new ObjectInputStream(in);
CMessage str=(CMessage)br.readObject() ; //这条语句时出错
}catch(Exception){
}
不知原因为何?大家请帮看看哪里是否有写错?
public class CMessage implements java.io.Serializable{
public int parType=0; //父类型
public CMessage() {
}
}
2、在JB4的应用程序中使用jdbc,总会初始化不成功,而用计事本写的则没有问题,是何原因?且编译后使用java application也不能运行程序,报错如下:
C:tomcatwebappsROOTchat_2.0Serverclassesserver>java Server
Exception in thread "main" java.lang.NoClassDefFoundError: Server (wrong name: s
erver/Server)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
兄弟们可有解决方法?
|
不能肯定,建议你检查一下:
- CMessage这个类是否在client/server两边都有,版本是否一致
- client/server两边的JVM是否类似?差的太远有时可能有问题
- CMessage这个类是否在client/server两边都有,版本是否一致
- client/server两边的JVM是否类似?差的太远有时可能有问题
|
对阿,我问报什么错阿
|
import java.io.*;
import java.net.*;
public class Client
{
public static void main(String args[])
{
try
{
Socket mySocket =new Socket("127.0.0.1",1000);
System.out.println("Connect to 127.0.0.1:1000");
InputStream in=mySocket.getInputStream();
ObjectInputStream br = new ObjectInputStream(in);
CMessage str=(CMessage)br.readObject() ; //ÕâÌõÓï¾äʱ³ö´í
System.out.println("Read in object value:"+str.parType);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
import java.net.*;
public class Client
{
public static void main(String args[])
{
try
{
Socket mySocket =new Socket("127.0.0.1",1000);
System.out.println("Connect to 127.0.0.1:1000");
InputStream in=mySocket.getInputStream();
ObjectInputStream br = new ObjectInputStream(in);
CMessage str=(CMessage)br.readObject() ; //ÕâÌõÓï¾äʱ³ö´í
System.out.println("Read in object value:"+str.parType);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
|
可能你的java源文件是小写的server.java,在windows系列下有,这个问题,请检查看看。