由于工作上的需求,做了一个解析xml的工具类,需要提供给别人使用。我就将项目打成了一个jar,打算用「java -jar jar包路径 参数一 参数二」命令的方式执行。在自己测试的时候,发现一直提示没有主清单属性,意为找不到程序的入口。后来去查了查,发现是因为没有指定程序的入口类。
解决方法是:在pom.xml文件中添加如下配置(重点是<mainClass></mainClass>标签,用来指定入口类的路径,如果有包名,在前面写就可以了)
还有一种方法是打开jar包里的MANIFEST.MF文件,在里面添加Main-Class:带包名的完整类名。至于这个MANIFEST.MF文件,是用来描述你这个jar包的一些信息的。比如一般来说,Manifest-Version(MF文件的版本号)Main-Class(带有main方法的入口类)Class-Path(执行这个jar所需的classpath以及第三方的依赖)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>7</source>
<target>7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>ParseXml</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>