专栏首页路过君BLOG from CSDNspringboot maven项目打包SAPJCO3.JAR

springboot maven项目打包SAPJCO3.JAR

下载SAPJCO3

SAPJCO3 3.1.2

springboot项目加入本地JAR包依赖

pom.xml

<!-- 引入sapjco3.jar -->
<dependency>
    <groupId>com.sap.conn.jco</groupId>
    <artifactId>sapjco3</artifactId>
    <version>3.1.2</version>
    <scope>system</scope>
    <systemPath>C:/SAPJCO/sapjco3.jar</systemPath>
</dependency>
...
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <!-- 加入以下代码,否则不会将dependency.scope=system的依赖项打包 -->
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
            </configuration>
        </plugin>
    </plugins>
</build>

启动报错

Caused by: java.lang.ExceptionInInitializerError:
 JCo initialization failed with java.lang.ExceptionInInitializerError:
  Illegal JCo archive "sapjco3-3.1.2.jar".
   It is not allowed to rename or repackage the original archive "sapjco3.jar".

原因分析

  1. 使用maven打包时会将依赖项jar包改名加上版本号 打包后可以看到jar包中对应文件为BOOT-INF\lib\sapjco3-3.1.2.jar
  2. sapjco3.0.11之后版本加入对sapjco3.jar包校验,如果文件名不符合启动项目报错 源码:com.sap.conn.jco.rt.DefaultJCoRuntime
...
private static String loadJCoLibrary() {
...
if (!osArch.equals("sapjco3.jar") 
	&& !osArch.startsWith("com.sap.conn.jco") 
	&& Package.getPackage("org.apache.maven.surefire.booter") == null 
	&& Package.getPackage("org.eclipse.jdt.internal.junit.runner") == null) {
	throw new ExceptionInInitializerError("Illegal JCo archive \"" + osArch + "\". It is not allowed to rename or repackage the original archive \"" + "sapjco3.jar" + "\".");
	}
...
}
...

解决

打包完成后将jar包对应文件改名为sapjco.jar即可

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • springsecurity oauth2 端点安全源码

    路过君
  • springsecurity oauth2 授权码模式流程

    http://authServer/oauth/authorize?response_type=code&client_id=client_id&redirec...

    路过君
  • SAPJCO3升级3.1后报错java.lang.UnsatisfiedLinkError: sapjco3.dll解决

    SAPJCO官方站点 The SAP Java Connector 3.1 requires a JDK/JRE 8 or 11. In addition, ...

    路过君
  • 做一个自动配置JDK环境变量的Powershell脚本

    本来想把这篇的内容包括在我的Powershell系列文章之内的,后来写完之后才想起来,这时候我已经复制粘贴到简书、CSDN和SegmentFault三个地方了。...

    乐百川
  • CSS进阶03-定位体系,格式化上下文,常规流

    (注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!) (注2:更多内容请查看我的目录。)

    love丁酥酥
  • 排序规则引起的冲突问题

    最近在工作中碰到一例因排序规则而导致的冲突问题,运行环境是SQL 2008,具体代码如下:

    Leshami
  • 笔记28 | 学习一个简单好用的下拉刷新、上拉加载控件

    项勇
  • 探索 Java 热部署的奥妙

    在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加...

    Spark学习技巧
  • PHP Session

    Session 保存在服务端。保存在超全局变量 $_SESSION。 设置 Session 在 PHP 文件最上方开启 Session session_star...

    康怀帅
  • 走进JavaWeb技术世界13:Hibernate入门经典与注解式开发

    本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

    Java技术江湖

扫码关注云+社区

领取腾讯云代金券