【问题标题】:Calling third party jar functions inside maven based spring boot application在基于 Maven 的 Spring Boot 应用程序中调用第三方 jar 函数
【发布时间】:2021-08-31 22:05:27
【问题描述】:

我有一个从另一个项目创建的外部 jar 文件,并在 Spring Boot Rest API 应用程序中使用它。

我尝试安装、手动添加、导入,但无法访问或无法使用 jar。

例如。我有一个名为 myjar.jar 的罐子。如果它自己运行:

java -jar myjar.jar one two there

我会得到我想要的输出。

我想在 Spring Boot Rest API 应用程序中使用这个 jar,它接受一个 json 输入并将输入数据发送到这个应用程序,这个 jar 提供输出,该输出再次以 json 格式返回。

但我无法导入此 jar,也无法在我的 Spring 引导应用程序中使用它。有没有办法访问jar文件中的函数/方法并调用它们。

有什么想法/建议吗?

【问题讨论】:

  • 构建后,您必须将 jar 上传到本地存储库。将从该存储库中下载并使用它。
  • 我关注了这个文档:mkyong.com/maven/…,它谈到了安装和更新 POM,我做到了。我也使用 Eclipse。即使在刷新/重新启动后,我仍然看不到那个 jar。最后我创建了一个 lib 文件夹并在那里添加了 jar,但仍然无法使用它。
  • 没有必要将该 jar 上传到本地存储库,因为当应用程序被运送到不同的系统时,它会抛出 class not found 异常,而是将该 jar 作为应用程序的一部分。该链接对您有用吗?
  • “无法访问jar或无法使用”究竟是什么意思?
  • 我想使用该 jar 文件中的一些方法。导入它,然后使用该 jar 的一些我不想重写的内置函数。

标签: java spring spring-boot maven jar


【解决方案1】:

你可以把你的 jar 放在你的项目中,并使用它的类和内置 jar 中的方法

将 myjar.jar 放入项目中

/src/main/resources/libs-external/myjar.jar

在 pom 依赖项中添加 myjar.jar

<dependency>
    <groupId>myjar</groupId>
    <artifactId>myjar</artifactId>
    <systemPath>${project.basedir}/src/main/resources/libs-external/myjar.jar</systemPath>
    <version>1.0</version>
    <scope>system</scope>
</dependency>

在构建时添加构建以在 Spring 应用程序中使用 myjar.jar

    <build>
        <!-- exclude jars in resources to avoid duplicated libs on built classpath   -->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/libs-external/*.jar</exclude>
                </excludes>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- Allow jar external on src/main/resources/**/libs-external/*.jar -->
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
    </build>

使用 myjar.jar 之类的依赖项打包 springboot 应用程序

mvn clean install

这样你就可以在你的 springboot rest 应用程序中使用 jar 中的所有类

另一种方法是使用父 pom maven 并从事模块化项目。

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2017-01-26
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2020-07-16
    相关资源
    最近更新 更多