首页 > 编程语言 >Maven打包本地jar包提示程序包xx.xx不存在,NoClassDefFoundError

Maven打包本地jar包提示程序包xx.xx不存在,NoClassDefFoundError

时间:2024-09-07 19:21:02浏览次数:11  
标签:xml assembly 程序包 NoClassDefFoundError jar xx true 打包

Maven打包无法加载本地jar包,打包成功运行 jar 包提示 java.lang.NoClassDefFoundError


项目引用了本地jar包,如加密、私有协议等,未发布到 Maven 服务器,以 jar 包形式在项目中引用,正常开发时未出现问题,Maven 打包执行 mvn package 时提示 “程序包xx.xx不存在”。

在这里插入图片描述
原因是 scope 为 system 的 maven 打包默认是不打进 jar 包进去的。
需要修改 pom.xml 配置,把 jar 包以依赖形式加入 pom:

<dependency>
     <groupId>net.lx</groupId>
     <artifactId>testmv2</artifactId>
     <version>1.0</version>
     <scope>system</scope>
     <!--testmv2-1.0.jar 放在项目根目录下的 libs 文件夹-->
     <systemPath>${project.basedir}/libs/testmv2-1.0.jar</systemPath>
 </dependency>

同时在 plugin 中添加 includeSystemScope 标记:

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

执行 mvn package 打包成功后,运行 java -jar testmv-1.0-SNAPSHOT.jar
提示 java.lang.NoClassDefFoundError: net/lx/test/EncTest。
在这里插入图片描述

需要在 pom.xml 中添加 maven-assembly-plugin 插件, 此插件可以将项目中的代码、资源和所有依赖包的内容打成一个程序集,可以指定打包结果是否包含外部资源和外部资源以什么形式存在。

assembly 插件配置,

<plugin>
	<artifactId>maven-assembly-plugin</artifactId>
	<configuration>
		<archive>
			<manifest>
				<!-- 指定程序入口类 -->
				<mainClass>com.zf.test1.Test1</mainClass>
			</manifest>
			<manifestEntries>
				<Class-Path>.</Class-Path>
			</manifestEntries>
		</archive>
	</configuration>
	<executions>
		<execution>
			<id>make-assembly</id>
			<phase>package</phase>
			<goals>
				<goal>single</goal>
			</goals>
			<configuration>
				<descriptors>
					<descriptor>assembly.xml</descriptor>
				</descriptors>
			</configuration>
		</execution>
	</executions>
</plugin>

assembly.xml 放在项目根目录

<?xml version="1.0" encoding="UTF-8"?>
<assembly>
    <id>jar-with-dependencies</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <!-- 默认的配置 -->
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <useProjectArtifact>true</useProjectArtifact>
            <unpack>true</unpack>
            <scope>runtime</scope>
        </dependencySet>
        <!-- 增加scope类型为system的配置 -->
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <useProjectArtifact>true</useProjectArtifact>
            <unpack>true</unpack>
            <scope>system</scope>
        </dependencySet>
    </dependencySets>
</assembly>

再次执行 mvn package 打包成功,执行 java -jar xx.jar 正常运行。

标签:xml,assembly,程序包,NoClassDefFoundError,jar,xx,true,打包
From: https://blog.csdn.net/yueeryuanyi/article/details/141936703

相关文章

  • 吊打XXX SA
    P1337吊打XXXSA无疑就这几个步骤。设初温t;降低系数down<1设定阈值更劣随机概率选择(温度越低,概率越低)AI评价:#include<bits/stdc++.h>usingnamespacestd;#definedown0.996//降低系数intn;structnode{ intx,y,w;}point[10006];doubleansx,......
  • drop tablespace xxx including contents恢复---惜分飞
    联系:手机/微信(+8617813235971)QQ(107644445)标题:droptablespacexxxincludingcontents恢复作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]最近接到一个客户恢复请求,对系统的核心业务表空间发起了droptablespacexxxincludin......
  • XXL_JOB定时任务使用
    官方文档:分布式任务调度平台XXL-JOBXXL-JOB服务端本地部署下载对应版本的服务端源码(https://github.com/xuxueli/xxl-job/releases)注意!下载的服务端源码版本一定要和客户端的版本对应客户端的版本可以查看(lun-plus/pom.xml)<xxl.job.version>2.4.0</xxl.job.version>新建数......
  • IDA 出现 Decompilation failure: xxx: call analysis failed Please refer to the ma
    题目https://files.buuoj.cn/files/3519510dd82111302327c73a17602a65/attachment.zipF5反汇编发现弹出这个窗口Decompilationfailure:401095:callanalysisfailedPleaserefertothemanualtofindappropriateactions右键查看TextView来到这个地址进入这个函......
  • 搭建 xxl-job 调度中心
    文章目录1、初始化“调度数据库”2、修改“调度中心”配置'3、打包运行”调度中心“1、初始化“调度数据库”请下载项目源码并解压,获取“调度数据库初始化SQL脚本”并执行即可。“调度数据库初始化SQL脚本”位置为:/xxl-job/doc/db/tables_xxl_job.sql调度中心......
  • pycharm报错-Cannot start process, the working directory 'xxx'
    一、运行main方法报错,但是运行单个用例不报错错误提示:二、原因:竟然是因为我修改了包名三、找到editConfiguration 四、把路径修改正确五、......
  • 【Windows】windows server如何实现 ps aux | grep xxx 方式过滤出要看到的进程信息
    在WindowsServer中,可以使用PowerShell或命令提示符(cmd.exe)来实现类似Linux中psaux|grepxxx的功能。具体来说,可以使用PowerShell的Get-Process命令来获取进程信息,并使用管道(|)和筛选命令来过滤出特定的进程信息。使用PowerShellPowerShell提供了非常强大的命令行工具,......
  • SpringCloud-搭建XXL-JOB任务调度平台
    本教程提供了从XXL-JOB平台介绍到具体搭建流程的详细说明,旨在帮助开发者和系统管理员快速理解和部署XXL-JOB任务调度平台。通过SpringCloud集成XXL-JOB任务调度平台,可以使微服务环境中的任务调度更加灵活和高效。整个过程中,调度中心和执行器的正确配置是关键。此外,通过XXL-JOB提供......
  • 运行开发模板报错lombok java 无法将类 XX类中的构造器 X应用到给定类型|java: 找不到
    一.运行环境IntelliJIDEA2024.1.4  IDEA旗舰版二.解决方法1.更改lombok版本→1.8.30<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope......
  • SHxxx传感器集线器,最多支持100组频率+温度传感器接入,满足您的多通道需求
    SHxxx传感器集线器,最多支持100组频率+温度传感器接入,满足您的多通道需求SHxxx是一个传感器集线器,能够将多路传感器轮转切换到单一接口(最多200路)。它解决了测试现场传感器数量较多时传感器编号混乱的问题。该传感器集线器适用于2/3/4线制的所有传感器,例如振弦、NTC热敏电阻温度、......