背景
公司要从erp拿数, 所以集成一下sapjco3进行连接. 初次集成在本地是没有问题的, 但是打包之后运行会出现
Caused by: java.lang.ExceptionInInitializerError: JCo initialization failed with java.lang.ExceptionInInitializerError: Illegal JCo archive “sapjco3-3.0.17.jar”. It is not allowed to rename or repackage the original archive “sapjco3.jar”.
这个问题是告诉我们不可以重命名这个jar包.
我查询了一下这个问题 原因是因为sap公司不允许进行sapjco3jar包的重命名或者重新打包,并且sap公司的某些客户场景遇到了问题,因此在sapjco3中添加了sapjco3的重命名检查,并将其硬编码到了jar包中, 也就是我们俗称的"写死了"
而我们在打包之后, maven会默认把version放在jar名的后面进行拼接. 所以造成了这个问题.
解决方案
1. 手动重命名
这个解决方案是有点朴实无华了, 但确实有效
你可以在打包过后的jar包中找到lib文件夹并把sapjco3-xxxx.jar重命名成sapjco3.jar或者sapjco3_IDE.jar. 然后保存. 这两个名字都可以解决问题
缺点就是: 你每次打完包都需要重命名, 以后交接文档什么的这一些都要写进去
2. 配置copy插件并指定该包进行stripVersion操作
在sap的官网论坛中我们可以看到, 还是有人不太满意这个手动