【maven】成功⽣成jar包,提⽰不到主类?
问题描述:
  使⽤maven构建zookeeper项⽬,完成⼀个简单的创建组的实例,代码调试完成,使⽤mvn clean install 成功打包得到了jar包,但是在执⾏时发现使⽤java -cp target/XXX.jar com.App却提⽰“不到或者⽆法加载主类”,⽤java -jar对jar包查看,提⽰“包中没有主清单属性”。
解决办法:
  ⾸先在⽹上查询了很多相关的问题,逐⼀进⾏了排查,包括环境变量的配置、CLASSPATH中有没有当前路径.、主类中有没有main函数、包名是否正确等等。
  最后发现,环境配置都没有问题,并且只有当程序⾥使⽤到了第三⽅jar包时才会出现问题,如果只是⼀个简单的Hello World程序是可以正常运⾏的。在经过相关的测试以后,发现问题还是在pom⽂件上。
  ⾸先,对于pom⽂件中的每个依赖,scope的属性值要注意,它主要管理依赖的部署。⽬前可以使⽤5个值:compile,缺省值,适⽤于所有阶段,会随着项⽬⼀起发布。
provided,类似compile,期望JDK、容器或使⽤者会提供这个依赖。如servlet.jar。
runtime,只在运⾏时使⽤,如JDBC驱动,适⽤运⾏和测试阶段。
test,只在测试时使⽤,⽤于编译和运⾏测试代码。不会随项⽬发布。
system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查它。
maven打包本地jar包  其次,这⾥报错的主要原因是:l⽂件中没有加⼊mainclass的transformer,如下修改pom⽂件后,程序运⾏正确,可以把它作为⼀个模板运⽤到其他maven项⽬中。
<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hadoop.sgz</groupId>
<artifactId>zkStudy</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>zkStudy</name>
<url></url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- mvnrepository/artifact/keeper/zookeeper -->
<dependency>
<groupId>keeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.4-beta</version>
</dependency>
<!-- mvnrepository/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.source.ManifestResourceTransformer">
<mainClass>com.hadoop.sgz.App</mainClass>
</transformer>
</transformers>                    </configuration>            </execution>
</executions>
</plugin>
</plugins>
</build>
</project>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。