gpt4 book ai didi

java - 将本地 jar 包含到 Maven 项目后出现 ClassNotFoundException

转载 作者:搜寻专家 更新时间:2023-11-01 01:50:25 25 4
gpt4 key购买 nike

我有一个基于maven的spring boot项目。

我必须包括一个由另一个团队提供的本地 jar。所以我遵循接受的答案:How to include local jar files in Maven project

所以我使用:

<dependency>
<groupId>com.netease</groupId>
<artifactId>thrift</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/prome-thrift-client-1.0.0.jar</systemPath>
</dependency>

这在 IDEA 中运行良好。但是当我尝试运行包 jar 时:

  mvn clean package
java -jar target/prome-data.jar

堆栈跟踪就像:

....
....
Caused by: java.lang.ClassNotFoundException: com.netease.thrift.client.ThriftRpcClient

有什么我想念的吗

最佳答案

我今天遇到了类似的问题,卡了我半天才解决。

对于大多数情况,使用下面的代码可以很好地进行开发。

<dependency>
<groupId>com.netease</groupId>
<artifactId>thrift</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/prome-thrift-client-1.0.0.jar</systemPath>
</dependency>

如果你把jar放到正确的路径下,那么在IDEAEclipse中都可以运行。

将 jar 部署到服务器或在本地运行 jar 后,它可能会抛出 ClassNotFoundException

如果您使用的是 spring-boot,您仍然需要以下插件:

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>

运行mvn clean package后,您可以在/BOOT_INF/lib下找到jar。

Between,如果你的包是war,那么你仍然需要这个插件:

 <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<!-- <targetPath>WEB_INF/lib/</targetPath> just for none spring-boot project -->
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>

----------------另一种方式--------------------

您可以使用此插件替换maven-war-plugin:

 <plugin>  
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArguments>
<extdirs>${project.basedir}/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>

并添加资源:

<resources>  
<resource>
<directory>lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<targetPath>BOOT-INF/classes/</targetPath>
</resource>
</resources>

关于java - 将本地 jar 包含到 Maven 项目后出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35884928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com