溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot項目接入sap與部署到docker遇到的問題有哪些

發(fā)布時間:2021-09-29 15:56:33 來源:億速云 閱讀:273 作者:柒染 欄目:云計算

本篇文章為大家展示了springboot項目接入sap與部署到docker遇到的問題有哪些,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

前言

主要記錄在協(xié)助部署接入sap遇到的問題,且只記錄解決問題的答案,不說明原理。

問題實錄

1、問題一:Illegal JCo archive "sapjco-1.0.jar". It is not allowed to rename or repackage the original archive "sapjco3.jar"

解決方案一:手動項目中將sapjco-1.0.jar重名為sapjco3.jar

不過我們沒采用這種方案

解決方案二:指定maven的scope為system,形如下

 <dependency>
            <groupId>com.sap</groupId>
            <artifactId>sapjco</artifactId>
            <version>${sap.version}</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/sapjco3.jar</systemPath>
        </dependency>

然后指定resources,形如下

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <extdirs>${project.basedir}/lib</extdirs>
                    </compilerArguments>
                </configuration>
            </plugin>

        </plugins>

        <resources>
            <resource>
                <directory>${project.basedir}/lib</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
            <resource>
                <directory>${project.basedir}/lib</directory>
                <targetPath>BOOT-INF</targetPath>
                <includes>
                    <include>**/*.so</include>
                    <include>**/*.dll</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <!--<targetPath>BOOT-INF/classes/</targetPath>-->
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

這個的作用是將sapjco3.jar打進BOOT-INF/lib/

問題二:java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path

因為項目是部署到docker里面去,因此本文只寫基于docker的解決方案

解決方案如下:

在dockerFile里面指定LD_LIBRARY_PATH環(huán)境變量,形如下

FROM adoptopenjdk/openjdk8
VOLUME /tmp
#ENV JAVA_OPTS="-Dcom.sun.management.jmxremote.port=39083 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
ENV JAVA_OPTS=""
ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH
COPY localtime /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
COPY hello-biz/target/hello-biz-*.jar app.jar
COPY hello-biz/lib/libsapjco3.so /usr/local/lib/libsapjco3.so
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

上述內(nèi)容就是springboot項目接入sap與部署到docker遇到的問題有哪些,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI