Eclipse开发OSGI插件,导出Bundle中文乱码问题

之前的项目中网关使用的是OSGI,Bundle 插件都是用Eclipse开发的,但是开发过程中发现Bundle在Eclipse中运行的时候中文输出是正常的,只有导出jar包放到Felix中运行后就变为乱码了,项目组一直没找到原因,所以Bundle中有遇到中文的地方,只好把中文转为 Unicode 编码来解决乱码的问题,非常影响开发效率

问题分析

Bundle开发好之后在Eclipse中运行中文不乱码,到时放到 Felix 容器中运行就出现乱码,当时怀疑是 Felix 运行环境导致的,所以在不同的环境下 CentOS 、ubuntu、Win 系统中都做了测试,发现中文乱码依然出现,基本可以确定和运行环境关系不大,当时就隐约感到会不会是导出的 jar 包出现的问题,但又想到平时开发的普通的 web 程序导出 Jar 包或是 War包的时候,中文并没有出现乱码的问题,觉得这块问题不到,就顺手点开看了一下,结果发现 jar 包中的中文全都变成了乱码
程序中的中文
Eclipse导出的插件jar包
看到这之后就基本明了了,乱码早在jar包阶段就已经引进了,根本和运行环境或是运行环境字符集没什么关系,唯一的原因就是 Eclipse 打包阶段出现了问题,再次研究Eclipse打包菜单的选项时发现这个一个选项:Use class files compiled in the workspace
Eclipse插件导出
想到在Eclipse中并没有什么问题,字面意思上看可能是和上面那个选项有关,勾选上之后,再次打包就发现 Jar 包中的中文变正常了,扔到Felix 运行,中文也没有问题了,乱码的问题一下子就被解决了
勾选Use class files compiled in the workspace进行打包
之后我通过百度、Google 各种查找,目前还是没有找到为什么勾选上之后原来的乱码就能够解决掉,最后在一个不起眼的文章中提到 Eclipse 的插件导出编译有多种,Use class files compiled in the workspace 选项勾上之后执行的是另一种编译方式,不勾选是默认的编译方式,可能是和编译方式有关吧,有看到这篇博客的同学如果有知道他们之间区别可以给我留言评论,我也学习学习

总结

如果你的Bundle导出后中文也变为乱码,解决办法就是在导出菜单中 Use class files compiled in the workspace 这个选型勾上即可,该选型在Options 标签页下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值