ObjectInputStream.readObject() ClassNotFoundException问题

问题描述

Oracle的javaee6CTS测试的interop测试中(EJBstatefulSessionbean相关),ObjectInputStream.readObject()时抛出ClassNotFoundException异常。该classa是存在的,且在client端有相应jar的引用。哪位高手帮忙分析一下可能的原因吧,多谢!#环境:OS:LinuxVI:WebOTX产品RI:glassfish3jdk:1.7//Errortracejava.lang.ClassNotFoundException:com.sun.ts.tests.interop.ejb.session.stateful.handletest.TestBeanatjava.net.URLClassLoader$1.run(URLClassLoader.java:366)atjava.net.URLClassLoader$1.run(URLClassLoader.java:355)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassLoader.findClass(URLClassLoader.java:354)atjava.lang.ClassLoader.loadClass(ClassLoader.java:425)atjava.lang.ClassLoader.loadClass(ClassLoader.java:358)atjava.lang.Class.forName0(NativeMethod)atjava.lang.Class.forName(Class.java:270)atjava.io.ObjectInputStream.resolveProxyClass(ObjectInputStream.java:697)atjava.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1558)atjava.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)atjava.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)atjava.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)atjava.io.ObjectInputStream.readObject(ObjectInputStream.java:370)//Client代码片段ObjectInputStreamis=null;ObjectOutputStreamos=null;try{//createEJBinstancelogMsg("CreateEJBinstance");beanRef=(TestBean)beanHome.create(props);logMsg("pingobject");intpingCount=beanRef.ping(1);logMsg("gethandleforobject");Handlehandle=beanRef.getHandle();logMsg("writeobjectoutputstreamtobytearray");ByteArrayOutputStreambaos=newByteArrayOutputStream();os=newObjectOutputStream(baos);os.writeObject(handle);logMsg("readobjectoutputstreamfrombytearray");byte[]b=baos.toByteArray();ByteArrayInputStreambais=newByteArrayInputStream(b);is=newObjectInputStream(bais);HandledeserializedHandle=(Handle)is.readObject();//throwClassNotFoundExceptionlogMsg("createobjectreferencefromdeserializedhandle");EJBObjectejbObject=deserializedHandle.getEJBObject();TestBeanbeanRef2=(TestBean)PortableRemoteObject.narrow(ejbObject,TestBean.class);booleanpass=true;if(!beanRef.isIdentical(beanRef2)){logErr("beanreferencesnotequal-unexpected");pass=false;}elselogMsg("beanreferencesequal-expected");logMsg("pingobjectviadeserializedobjectreference");intping2Count=beanRef2.ping(0);if(ping2Count!=pingCount&&pingCount!=1){logMsg("pingcount:expected"+pingCount+",received"+ping2Count);pass=false;}if(!pass)thrownewFault("test2failed");beanRef2.remove();}catch(Exceptione){thrownewFault("test2failed",e);}finally{try{logMsg("closingobjectstreams");if(is!=null)is.close();if(os!=null)os.close();}catch(Exceptione){}}

解决方案

时间: 2024-12-22 14:57:36

ObjectInputStream.readObject() ClassNotFoundException问题的相关文章

c s-java.lang.ClassNotFoundException

问题描述 java.lang.ClassNotFoundException java.lang.ClassNotFoundException: com.example.zhenyi.common.SocketRequest at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPriv

socket-objectinputstream readobject 为何只能读取第一次写入的值

问题描述 objectinputstream readobject 为何只能读取第一次写入的值 public class TransEntity implements Serializable//传输信息实体封装类 { private static final long serialVersionUID = 1L; private String operaType;//用户操作类型;如发送文本消息,发送语音消息,发送音频消息 private String responseTags;//网络响应状

javaweb 报classnotfoundexception

问题描述 javaweb 报classnotfoundexception public void SetDic(String dicFile) { ObjectInputStream objectIn=null; try { objectIn = new ObjectInputStream(new FileInputStream(new File( dicFile))); } catch (IOException e) { e.printStackTrace(System.err); Syste

websphere ClassNotFoundException: com.sun.net.ssl.internal.ssl.JSA_RSAPublicKey

问题描述 最近迁移程序,原来的程序在jboss中运行,现在迁移到webshere中,在调用方法是RSAPublicKey转换时,报该类找不到.[14-7-1619:25:34:013CST]00000037SystemErrRjava.lang.ClassNotFoundException:com.sun.net.ssl.internal.ssl.JSA_RSAPublicKeyatcom.ibm.ws.classloader.CompoundClassLoader.findClass(Comp

我的Java开发学习之旅------>Java使用ObjectOutputStream和ObjectInputStream序列号对象报java.io.EOFException异常的解决方法

今天用ObjectOutputStream和ObjectInputStream进行对象序列化话操作的时候,报了java.io.EOFException异常. 异常代码如下: java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2554) at java.io.ObjectInputStream.readObject0(ObjectInputSt

存取程序状态的几种方法——Java I/O应用杂谈

程序 jungleford如是说     已经有一个多月没有搭理blog了,原因很多,譬如实验室的项目正在收工,巨忙:譬如找工作及其相关的事情:而且二月份大部分时间是陪老爹老妈,家里拨号的速度可想而知--但主要还是没有找到一个合适的topic,或者说这段时间懒了(临毕业前期综合症),净在看<汉武大帝>和历史方面的书,还有其它乱七八糟的闲书,就是没有认真地玩Java,哈哈!现在工作差不多落实了,好在不算太烂,小资青年jungleford的生活又开始步入正轨了!以上是新年里的一些废话.    今天

Java序列化——transient关键字和Externalizable接口

    提到Java序列化,相信大家都不陌生.我们在序列化的时候,需要将被序列化的类实现Serializable接口,这样的类在序列化时,会默认将所有的字段都序列化.那么当我们在序列化Java对象时,如果不希望对象中某些字段被序列化(如密码字段),怎么实现呢?看一个例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import java.io.Serializable; import java.util

arraylist-安卓开发:怎样向list里面连续不断地存值,并读取出来?

问题描述 安卓开发:怎样向list里面连续不断地存值,并读取出来? 目前需要不断从GPS那获取经纬度值,然后存储到list里面,再然后读取出来,绘制折线. 怎样才能实现不断存入经纬度,然后再读取出来? 如下: private List mList; mList=new ArrayList();//实例化list GeoPoint pt = new GeoPoint((int)(location.getLatitude()*1e6), (int)(location.getLongitude()*1

我的Java开发学习之旅------&amp;gt;Java经典面试题

摘自张孝祥itcast 从享受生活的角度上来说:"程序员并不是一种最好的职业,我认为两种人可以做程序员,第一,你不做程序员,你就没有什么工作可做,或者说是即使有可以做的工作但是你非常不愿意去做:第二,你非常痴迷和爱好程序,并且在这方面有一些天赋和优势.程序员的结局也是有两种:第一,默默退休,第二以程序员为起点或跳板,注意积累,跟对了好的老板或团队,找到和很好的搭档自己创业,成为IT金领和富翁." 人们在时间面前是平等的,吾生也有涯,所以,你的经验更丰富点,那不算什么,经验是用时间积累的