无法使用java -jar执行maven生成的jar文件

时间:2011-11-22 05:11:10

标签: java maven

您好我正在使用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

任何解决此问题的指针都非常有用..

提前致谢..

1 个答案:

答案 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存在于同一级别。