java.io.InvalidClassException: local class incompatible: stream classdes

 
Re: ava.io.InvalidClassException: local class incompatible: stream classdes   
Feb 29, 2008 2:25 AM (reply 15 of 19)

Click to email this message

 
My Java version is the 1.5.0_14 and the value -3126998878902358585L comes from a solution that I read in a forum. The class that I'm trying to use is:
import java.util.Date;

public class DateExtendido extends Date {

static final long serialVersionUID = -3126998878902358585L;

public Date date=null;

public DateExtendido(){
super();
}

public DateExtendido(Date d){
super();
date = d;
}
}

I'm use it in this lines:

try{
DateExtendido inicioDesdeEx = new DateExtendido(inicioDesde);
out.writeObject(inicioDesdeEx);
DateExtendido inicioHastaEx = new DateExtendido(inicioHasta);
out.writeObject(inicioHastaEx);
}
catch(Exception e){
e.printStackTrace(System.out);
}

...

DateExtendido inicioDesdeEx = null;
try{
inicioDesdeEx = (DateExtendido)in.readObject();
inicioDesde = inicioDesdeEx.date;

DateExtendido inicioHastaEx = (DateExtendido)in.readObject();
inicioHasta = inicioHastaEx.date;
}catch(Exception e){
e.printStackTrace(System.out);
}

And the error:

java.io.InvalidClassException: java.util.Date; local class incompatible: stream classdesc serialVersionUID = 7523895402267505689, local class serialVersionUID = 7523967970034938905
at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at dumbo7.user.FiltroUsuario.readObject(FiltroUsuario.java:348)
at dumbo7.user.FiltroUsuario.importFiltro(FiltroUsuario.java:436)
at dumbo7.user.DumboUser.setPersonalData(DumboUser.java:250)
at dumbo7.user.DumboUser.<init>(DumboUser.java:69)
at dumbo7.inicio.GestorInicio.loginDumbo(GestorInicio.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at atica.frameweb.manager.ManagerModule.doMethod(ManagerModule.java:611)
at atica.frameweb.manager.ManagerModule.doObjectDBMethod(ManagerModule.java:371)
at atica.frameweb.manager.ManagerModule.doObject(ManagerModule.java:261)
at atica.frameweb.manager.ManagerModule.doActions(ManagerModule.java:201)
at atica.frameweb.manager.HttpServletManager.service(HttpServletManager.java:122)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:420)
at org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:134)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)

 
ibancg
Posts:1
Registered: 3/4/08
Re: ava.io.InvalidClassException: local class incompatible: stream classdes   
Mar 4, 2008 4:35 AM (reply 16 of 19)

Click to email this message

 
Hi, I was having this error.

Take a look at the hex representation of both serial uids:

7523895402267505689: 0x686A3F014B597400
7523967970034938905: 0x686A81014B597400

The 0x3F was changed by a 0x81.

In my case this behaviour was caused (only in MS Windows) by a string proccessing of the serialized object stream before unmarshall the object. A proccessing like that:

byte[] processedSerializedObjectByteArray = serializedObjectByteArray.toString().replace( ..., ... ).getBytes();

I fixed the problem with binary replace instead of using the String API, wich causes the replacement of 0x3F characters into 0x81 (only in MS Windows).
Are you doing a similar string proccessing?
 
ejp
Posts:15,588
Registered: 5/11/97
Re: ava.io.InvalidClassException: local class incompatible: stream classdes   
Mar 4, 2008 2:07 PM (reply 17 of 19)

Click to email this message

 
Also @OP I can't see what value the DateExtendido class is adding ...
 
relicary
Posts:4
Registered: 2/25/08
Re: ava.io.InvalidClassException: local class incompatible: stream classdes   
Mar 5, 2008 5:53 AM (reply 18 of 19)

Click to email this message

 
Hi,

I'm tried another way. Cos the java.util.Date don't works anyway, I'm save it as a String using DateFormat. The String type don't need the serialVersionUID.
 
ejp
Posts:15,588
Registered: 5/11/97
Re: ava.io.InvalidClassException: local class incompatible: stream classdes   
Mar 5, 2008 2:04 PM (reply 19 of 19)

Click to email this message

 
See reply #16. The 0x81 is the only byte with the high bit set and it is the only byte which is being corrupted. This clearly indicates that you are corrupting the stream somewhere, possibly by using a Reader or Writer, or converting it to and from a String. If you don't fix that problem it will come back and bite you somewhere else.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dimension ss = Toolkit.getDefaultToolkit().getScreenSize(); public ChatClient(){ super("登录聊天室"); pnlLogin = new JPanel(); this.getContentPane().add(pnlLogin); lblServer = new JLabel("服务器:"); lblPort = new JLabel("端口:"); lblName = new JLabel("用户名:"); lblPassword = new JLabel("口 令:"); tfServer = new JTextField(15); tfServer.setText("127.0.0.1"); tfPort = new JTextField(6); tfPort.setText("8000"); tfName = new JTextField(20); pwd = new JPasswordField(20); btnLogin = new JButton("登录"); btnRegister = new JButton("注册"); btnExit=new JButton("退出"); pnlLogin.setLayout(null); pnlLogin.setBackground(new Color(205,112,159)); lblServer.setBounds(40,35,50,30); tfServer.setBounds(90,35,102,25); lblPort.setBounds(195,35,35,30); tfPort.setBounds(230,35,55,25); lblName.setBounds(40,70,50,30); tfName.setBounds(90,70,195,25); lblPassword.setBounds(40,100,50,30); pwd.setBounds(90,100,195,25); btnLogin.setBounds(30,160,70,25); btnRegister.setBounds(130,160,70,25); btnExit.setBounds(230,160,70,25); pnlLogin.add(lblServer); pnlLogin.add(tfServer); pnlLogin.add(lblPort); pnlLogin.add(tfPort); pnlLogin.add(lblName); pnlLogin.add(tfName); pnlLogin.add(lblPassword); pnlLogin.add(pwd); pnlLogin.add(btnLogin); pnlLogin.add(btnRegister); pnlLogin.add(btnExit); //设置登录窗口 setResizable(false); setSize(320,260); setVisible(true); setLocation((ss.width-getWidth())/2,(ss.height-getHeight())/2); //为按钮注册监听 btnLogin.addActionListener(this); btnRegister.addActionListener(this); btnExit.addActionListener(this); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } //按钮监听响应 public void actionPerformed(ActionEvent ae){ Object source = ae.getSource(); if (source.equals(btnLogin)){ if (tfName.getText().equals("") || pwd.getPassword().equals("")) JOptionPane.showMessageDialog(null, "用户名或密码不能为空"); else strServerIp = tfServer.getText(); login(); } if (source.equals(btnRegister)){ strServerIp = tfServer.getText(); this.dispose(); new Register(strServerIp,8000); } if (source == btnExit) { System.exit(0); } } public void login() { User data = new User(); data.name = tfName.getText(); data.password = new String(pwd.getPassword()); try { String str = InetAddress.getLocalHost().toString(); data.ip = " "+ str.substring(str.lastIndexOf("/"), str.length()); } catch (UnknownHostException ex) { Logger.getLogger(ChatClient.class.getName()).log(Level.SEVERE, null, ex); } try{ Socket sock = new Socket(strServerIp,8000); ObjectOutputStream os = new ObjectOutputStream(sock.getOutputStream()); os.writeObject((User) data); //读来自服务器socket的登录状态 BufferedReader br = new BufferedReader(new InputStreamReader(sock.getInputStream())); String status = br.readLine(); if (status.equals("登陆成功")){ new ChatRoom((String)data.name,strServerIp); this.dispose(); //关闭流对象 os.close(); br.close(); sock.close(); } else{ JOptionPane.showMessageDialog(null, status); os.close(); br.close(); sock.close(); } } catch (ConnectException e1){ JOptionPane.showMessageDialog(null, "连接到制定服务器失败!"); } catch (InvalidClassException e2) { JOptionPane.showMessageDialog(null, "类错误!"); } catch (NotSerializableException e3) { JOptionPane.showMessageDialog(null, "对象未序列化!"); } catch (IOException e4) { JOptionPane.showMessageDialog(null, "不能写入到指定服务器!"); } } public static void main(String arg[]){ new ChatClient(); } }
WebLogic12.2.1.3补丁 p29814665_122130 该补丁合集修复了下面新增的安全漏洞: 29585099 THE BACKPORT OF 27057023 CONTAINS AN ERROR 23071867 AGL DS XA AFFINITY NOT HONORED IN SOME TX LOCAL RESOURCE ASSIGNMENT SCENARIOS 29448643 JAVA.IO.INVALIDCLASSEXCEPTION: FILTER STATUS: REJECTED 29671623 CVE-2019-2725 26403575 CVE-2016-7103 29667975 CVE-2019-2824 29726561 CVE-2019-2729 29701537 CVE-2019-2827 1.2 Oracle WebLogic 12.1.3.0.190716 该补丁合集修复了下面新增的安全漏洞: 29667975: CVE-2019-2824 29671623: CVE-2019-2725 26403575: CVE-2016-7103 29701537: CVE-2019-2827 29870012: WLDATASOURCE.GETCONNECTIONTOINSTANCE(STRING INSTANCE) CAN FAIL IF NO CONNECTIONS TO INSTANCE HAVE BEEN PROCESSED 29448643: JAVA.IO.INVALIDCLASSEXCEPTION: FILTER STATUS: REJECTED 29312272: WSDL ERROR MUST ATTRIBUTE 'NAME' NOTFOUND IN ELEMENT 'BINDING 23071867: AGL DS XA AFFINITY NOT HONORED IN SOME TX LOCAL RESOURCE ASSIGNMENT SCENARIOS 29726561: CVE-2019-2729 1.3 Oracle WebLogic 12.2.1.3.190522 该补丁合集修复了下面新增的安全漏洞: 25369207: JAVA.LANG.OUTOFMEMORY ERROR HAPPENS WHEN INITIALIZING AN APPLICATION 29338121: CVE-2019-2799 29448643: JAVA.IO.INVALIDCLASSEXCEPTION: FILTER STATUS: REJECTED 29312272: WSDL ERROR MUST ATTRIBUTE 'NAME' NOTFOUND IN ELEMENT 'BINDING 26987594: ALLOW SUPRESSING CROSS COMPONENT WIRING PROCESSING DURING PROVISIONING 27010571: <INCOMING MESSAGE HEADER OR ABBREVIATION PROCESSING FAILED 26075541: .APPMERGEGEN_$DIGIT DIR REMAIN EVERY TIME BY DEPLOYING A EAR ON WLS 12.2.1 27823500: REGRESSION BUG WHICH INTRODUCED BY THE BUG FIXING OF 27678101 27248932: TRACKING BUG FOR 26941603 FOR WLS 25294832: WLS 12.2.1.2 DEPLOYMENT ERRORSMETHOD _JSPSERVICE EXCEEDS 65535 BYTES LIMIT 26131085: IMPROVE CORRUPT STORE RECOVERY 27659077: JSPS ARE GETTING RECOMPILED ON EVERY REQUEST 26403575: CVE-2016-7103 29667975: CVE-2019-2824 28278427: VERSION ADDED TWICE WHEN SAVING A SECURITY POLICY 29726561: CVE-2019-2729 29701537: CVE-2019-2827 29411629: CVE-2019-2856 29789769: FIXED AN ISSUE WITH XML

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值