#Maven 编译的jar报NoClassDefFoundError解决
来源:互联网 发布:一个简单的c语言程序 编辑:程序博客网 时间:2024/06/03 10:05
用Maven构建的项目,引入了第三方jar包,用mvn package
打包后,执行java -cp <target/jar-file> <main-class>
后报错NoClassDefFoundError。
方案1
修改pom.xml文件,在标签<build><plugins>
下新增两个个配置,把依赖的jar包拷贝到build的目录,并添加classpath,如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.2</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.mycmp.demo.Main</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/lib </outputDirectory> </configuration> </execution> </executions> </plugin>
如上修改完成后,执行mvn package
构建的jar包,再执行 java -cp <target/jar-file> <main-class>
不在报NoClassDefFoundError错
方案2
修改pom.xml文件,在标签<build><plugins>
下新增两个个配置,把所有依赖的jar包打包到build的jar包里面,实现零依赖,如下:
<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.mycm.demo.Main</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin>
如上修改完成后,执行mvn assembly:assembly
构建的jar包,再执行 java -cp <target/jar-file> <main-class>
不在报NoClassDefFoundError错
结论
1.方案1是需要依赖外部jar包,只是通过配置来处理classpath
2.方案2是把依赖包一起打包到目标jar包里面,生成的jar比较大
0 0
- #Maven 编译的jar报NoClassDefFoundError解决
- Maven项目中缺少jar包引起的报错 nested exception is java.lang.NoClassDefFoundError
- maven编译报错解决
- maven项目编译报找不到tool.jar
- maven package编译打包jar出错解决
- maven编译引入本地jar包-解决Maven中使用很多本地jar包的编译问题
- Eclipse的maven工程依赖本地非repository中的jar包编译报错的解决方案
- Maven 报java.lang.NoClassDefFoundError
- 由maven依赖的jar包有误导致tomcat运行报错的一种解决思路
- 解决maven引用jdk中的tools.jar报Missing artifact的问题
- 如何解决maven引用jdk中的tools.jar报Missing artifact的问题?
- 如何解决maven引用jdk中的tools.jar报Missing artifact的问题?
- 解决maven引用jdk中的tools.jar报Missing artifact的问题
- maven 报错的解决
- Maven项目引用本地jar包,编译后出现java.lang.NoClassDefFoundError
- spark-submit 报 NoClassDefFoundError 解决
- SpingMVC项目导入jar包运行报错,编译不报错的解决方式
- 解决Maven中使用很多本地jar包的编译问题
- JDK8新特性一览
- Bitmap合理处理避免OOM
- jdk源码剖析之LinkedList
- 对Java中枚举类型Enum的理解
- 23中设计模式详解
- #Maven 编译的jar报NoClassDefFoundError解决
- mysql查询最新几天的数据
- 1.《Mysql必知必会》简述 MySQL基本操作
- android button light 流程分析(三) — framework
- win下使用thrift生成gen-php文件代码
- linux下编译整个Android源码树
- ubuntu服务器中repo的安装使用
- 欢迎使用CSDN-markdown编辑器
- oracle 中删除表 drop delete truncate