安装及编译opendds

这个没什么好讲的 ,到官网去下载源代码包,根据安装要求在电脑上安装所需要的环境
官网链接:opendds

java环境设置

解压编译完成,根据官网的测试通过后就可以进入开发流程了:

java dds java dds开发_java


在该目录下执行命令 :source setenv.sh激活虚拟环境,在该目录下新建一个自己工程相关的目录,并在该目录下新建一个 idl 文件,然后按照官网上的步骤一步步进行执行,切记不可在自己的其他的目录下面进行上述操作,一定要在解压后的 opendds 目录下进行

注意点如下(也是我自己踩坑的地方):

java dds java dds开发_java_02


上图中的 Foo 是你自己定义的 idl 文件名,只需要修改这个其他的一定不要动,比如 Export 这个单词,后续编译后是直接按照这个大写进行文件查找的,如果修改了,编译的时候就找不到了,会报错。

java dds java dds开发_ci_03


这个是 mpc 文件,只需要修改和文件名相关的东西,将上述文件中的 Foo 全部替换成自己的 idl 文件名,其余的不要动。

以上需要我们自己准备的文件就都齐全了,剩下的就是按照教程一步一步的执行就可以了。

再次强调:一定要激活虚拟环境,一定要在解压后的 opendds 目录下面进行编译生成。

后续 :记录一次 opendds 缺少库文件 导致我调试两天都没调通的问题
过程:按照官网的整个流程部署完毕之后,想通过官网的教程部署一个自己的dds程序,但是使用idea一直在提示一个错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no OpenDDS_DCPS_Java in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) at java.lang.Runtime.loadLibrary0(Runtime.java:870) at java.lang.System.loadLibrary(System.java:1122) at OpenDDS.DCPS.TheParticipantFactory.loadNativeLib(TheParticipantFactory.java:35) at OpenDDS.DCPS.TheParticipantFactory.<clinit>(TheParticipantFactory.java:21) at main.TestPublisher.main(TestPublisher.java:40) 这个问题困扰了我两天,一直没有找到解决办法,其中在github中有一个类似的问题,大家可以参考:https://github.com/OpenDDS/OpenDDS/issues/838 按照他的方法我的问题始终没有解决,最终的解决方案是这样 :在 opendds 编译成功之后,会在${DDS_ROOT}/java/dds 目录下生成两个文件,libOpenDDS_DCPS_Java.so ;libOpenDDS_DCPS_Java.so.3.23.1这两个文件第一个是软链接,第二个是带版本号的可执行文件,将这两个文件放入 /usr/lib目录下,就可以运行程序了