Root Cause exception : java.rmi.UnmarshalException: failed to unmarshal interfac

本文记录了一次使用AgilePLM系统时遇到的版本不一致问题,具体表现为开发程序中使用的agileclasses.jar包与WebLogic中部署的AgilePLM系统的agileclasses.jar包版本冲突,导致序列号不匹配错误。文章提供了详细的错误日志及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动作:开发的Agile PLM下载EQuote报价表,产生的错误。错误日志如下:

原因:由于开发程序中使用的Agile agileclasses.jar包和 weblogic中部署的Agile PLM系统使用的 agileclasses.jar包版本不一致,产生了冲突。

两个jar版本中的类序列号不相同。(stream classdesc serialVersionUID = 429232405881875494,local class serialVersionUID = 2369846962012734310)

解决方案:检查自己开发程序中引用的jar文件 和 weblogic 中部署的Agile PLM系统 使用的jar文件 版本是否一致!即可解决。

 

Caused by: Error code : 60086

Error message : 有关详细信息,请访问 APIException.getRootCause()

Root Cause exception : java.rmi.UnmarshalException: failed to unmarshal interface

com.agile.common.client.sandbox.IBaseClientTable;

nested exception is:

java.io.InvalidClassException:

com.agile.common.client.value.ResponseNodeID;

local class incompatible: stream classdesc serialVersionUID = 429232405881875494,

local class serialVersionUID = 2369846962012734310

at com.agile.api.pc.APIObject.createError(APIObject.java:118)

at com.agile.api.pc.TableIterator$MoveWindowAction.doSdkAction(TableIterator.java:225)

at com.agile.api.common.SDKAction.run(SDKAction.java:23)

at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)

at weblogic.security.service.SecurityManager.runAs(Unknown Source)

at weblogic.security.Security.runAs(Security.java:61)

at com.agile.api.common.WebLogicAuthenticator.doAs(WebLogicAuthenticator.java:111)

at com.agile.api.common.Security.doAs(Security.java:54)

at com.agile.api.common.Security.doAs(Security.java:109)

at com.agile.api.pc.TableIterator.moveWindow(TableIterator.java:179)

.. 20 more

<!--EndFragment-->
### Application Server 连接失败解决方案 当遇到 `java.io.IOException` 导致无法检索 RMIServer stub 的问题时,通常涉及网络连接、端口配置以及服务启动顺序等方面的原因。以下是针对该问题的具体分析和解决方法: #### 1. **检查目标主机是否可达** 如果错误提示为 `Connection refused to host: 127.0.0.1` 或类似的地址不可达消息,则可能是本地循环接口未正常工作或者远程主机不存在监听的服务[^1]。可以通过以下命令验证目标主机上的指定端口是否有进程绑定并处于监听状态: ```bash netstat -aon | findstr <port> ``` 其中 `<port>` 是实际使用的 RMI 端口号,默认情况下可能为 1099。 #### 2. **确认 JMX/RMI 配置正确性** 某些场景下默认的 JMX 或者 RMI 端口被占用或受限于防火墙规则,这会引发连接异常。对于 Windows 平台可以尝试重新设置自定义 JMX 端口来规避冲突情况发生。例如通过命令行设定环境变量如下所示[^4]: ```batch set JMX_PORT=9999 ``` #### 3. **调整 Kafka 启动脚本中的参数** 如果是基于 Apache Kafka 构建的应用程序遇到了上述提到的相关联错误信息,则需核查 kafka-server-start.sh 文件里关于 jmx_opts 参数部分是否存在不当之处,并作出相应修正后再执行重启操作以应用更改后的配置项. #### 4. **排查防火墙或其他安全软件干扰** 即使设置了正确的端口映射关系,在企业内部环境中还可能存在额外的安全防护措施阻止外部访问请求到达预期的目的地。因此建议临时关闭这些保护机制来进行测试以便进一步定位根本原因所在;当然生产环境下不推荐完全禁用它们而是应该合理配置例外列表允许必要的通信流量通行无阻. #### 示例代码片段用于调试目的 下面提供了一段简单的 Java 测试类用来帮助诊断基本层面的连通状况: ```java import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class TestRmiConnect { public static void main(String[] args){ try{ String hostname = "localhost"; // 替换为目标服务器的实际IP/域名 int portNumber = 1099; // 对应到你的具体业务所采用的标准或是非标准数值 Registry registry = LocateRegistry.getRegistry(hostname,portNumber); System.out.println("Successfully connected to "+hostname+" on port "+portNumber); }catch(Exception e){ e.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值