您好我正在使用maven2来构建我的项目。我可以使用maven build使用命令mvn clean install
生成jar文件。
我已将此插件添加到我的pom.xml中以获取清单文件,以使类路径条目和主类执行:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.test.TestExample</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
当我构建项目并解压缩jar文件时,它生成了manifest.mf文件,并将主类条目添加为:Main-Class: com.test.TestExample
并将jar文件添加到Class-Path:mail-1.4.jar 。但是当我尝试使用命令java -jar TestJar.jar
执行jar文件时,我得到了异常:
Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
任何解决此问题的指针都非常有用..
提前致谢..
答案 0 :(得分:0)
您想要的是指示可执行jar的依赖项的位置。您可以尝试更新插件配置,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.test.TestExample</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
然后确保包含依赖项的lib文件夹与可执行jar存在于同一级别。