【问题标题】:Unable to execute maven generated jar file using java -jar无法使用 java -jar 执行 maven 生成的 jar 文件
【发布时间】:2011-11-22 05:11:10
【问题描述】:

您好,我正在使用 maven2 构建我的项目。我可以使用命令mvn clean install 使用maven build 生成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

任何解决这个问题的指针都非常有帮助..

提前谢谢..

【问题讨论】:

  • 你确定吗?对我来说按原样工作。您正在解压缩 jar 文件并检查清单吗?插件在 builds/plugins 元素中?
  • 是的,戴夫,我已经编辑了我的问题。请看一看。
  • 我在 pom.xml 中添加了 mail.jar 的依赖关系,它在我的本地路径 D:\jars\mail.jar 中,我正在运行 eclipse,并将条目添加到 mail.jar 的构建路径中使用本地路径,现在我试图通过 jar 文件运行,它无法找到 mail.jar。如何使 mail.jar 文件可用于我要执行的 jar?
  • 将其放在清单文件中指定的类路径中。
  • 我有一个名为 lib 的本地文件夹,其中有所有的 jar,比如 mail.jar。我可以使用该引用来使 mail.jar 可用吗?

标签: java maven


【解决方案1】:

您想要的是指示可执行 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 处于同一级别。

【讨论】:

  • 嗨 Raghuram,我有一个类路径 D:/eclipseWS/TestProj/src/main/resources/lib/xstream-1.2.2.jar"/,我提到了 truelib/,但我无法从lib文件夹..感谢您的时间
  • 您曾评论说您有一个名为lib 的本地文件夹,其中包含所有这些罐子。我的回答是对此的回应。上面的 sn -p 不会在任何地方放任何罐子
猜你喜欢
  • 2019-07-13
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 2012-05-26
  • 2017-10-04
  • 1970-01-01
相关资源
最近更新 更多