RMI 程序能在 Windows 上运行,却在 Linux 上报错的一个原因

上周因为工作需要,写了一个 RMI 程序。程序在我自己的电脑( Windows 平台)上可以正常运行,但是当把程序提交到公司的 Linux 服务器上之后却出了意想不到的问题。

在命令行中启动 rmiregistry 之后,启动程序的服务器端,这时 JVM 提示:

java.rmi.UnmarshalException: Error unmarshaling return header: java.io.EOFException

从方法调用的堆栈输出的结果看来,程序运行到 Naming.rebind() 方法时就遇到了问题。之后我将相同的程序拷贝到其他 Windows 机器上就地编译,都没有出现问题。而公司所有的 Linux 服务器(都是安装的 RedHat EL 4Java SE 5.0)上都出现相同的问题。最后不断排查,用 Google 搜索资料,在 SUN Technology Forum 上发现了这篇 postBasic RMI program works in windows but not Linux。原来是 Linux 上安装的 gcc 也有 rmiregistryrmic 的实现,而相应的环境变量又没有为此配置。使得在命令行下直接输入这两个命令,实际上调用的不是 Java 5 的相应程序,而是 gcc 的版本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值