Java在调用IDL导出的java类,在SUSE linux总是提示下面错误:
Failed to load javaidlb from
from default location.
而在Redhat AS3 ,Fedora,windows上却没有这个问题。仔细测了一下,得以下结果:
1)SUSE64位系统+IDL63环境 java无法调用IDL导出java类。(32位系统可以)
2)SUSE32位和64位+系统IDL64环境 java都无法调用IDL导出java类。
3)IDL70都可以。
估计是IDL70修正在SUSE上的bug。出现这个问题原因需要解释java调用IDL导出java类机制。
java能调用idl导出的java类,并不是把IDL的功能导成了java程序。它只是导出了java的一个IDL的接口类。在java调用IDL的功能时,实际上是通过这个接口用IDL运行了IDL程序,并接受和发送和IDL程序的信息。
IDL在负责java和idl转换功能有一个封装的java包-----javaidlb.jar,这个包在IDL的安装目录
IDL_dir/resource/bridges/export/java目录下面。
出现错误的原因就是java没有正常加载javaidlb.jar这个包去调用IDL编译器。
-------------------------------------------------------------------------------------------------------------------
在window下面IDL可以自己找到这个javaidlb.jar这个包。而在Linux和Unix下面需要执行IDL安装目录bin下面两个脚本来配置参数和路径,才可以正常使用java调idl功能。这个两个脚本是:
idl_setup.bash
bridge_setup.bash
更多可以看帮助对java调用IDL配置的说明---
--------------------------------------
而在suse上出的问题,估计是IDL这个功能在suse系统bug。