【问题标题】:Error when running maven generated executable jar运行maven生成的可执行jar时出错
【发布时间】:2010-12-22 19:13:10
【问题描述】:

执行 maven 生成的可执行 jar 时遇到(一个奇怪的)问题:

user@host$ java -server -jar MyJar.jar 

Error

(仅此而已!!!)

你知道这个错误之王是怎么来的吗?

在我的 pom.xml 中,我将所有依赖项复制到一个 lib 文件夹中:

<plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <phase>install</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/${artifactId}-${version}/${artifactId}-${version}/lib</outputDirectory>
                    </configuration>
                 </execution>
            </executions>
       </plugin>

然后我生成一个包含类路径的 .jar(+ 指向 lib 文件夹的前缀):

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                 <outputDirectory>${project.build.directory}/${artifactId}-${version}/${artifactId}-${version}/bin</outputDirectory>
                <finalName>MyJar</finalName>
                <archive>
                    <manifest>
                        <mainClass>
                           com.company.package.Main
                        </mainClass>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>../lib/</classpathPrefix>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

生成的 MANIFEST.MF 似乎包含正确的类路径。

非常感谢您的帮助!

【问题讨论】:

  • 您使用的是哪个 JVM? Jar 文件的内容(除了 MANIFEST.MF)是否符合您的预期?
  • java version "1.6.0_03" Java(TM) SE Runtime Environment (build 1.6.0_03-b05) Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_03-b05, 混合模式) 是的...内容正是我所期待的

标签: maven-2 jar executable


【解决方案1】:

错误并没有说太多,这确实很奇怪。您使用的是 Sun JDK 吗?

无论如何,我并不真正了解依赖项是如何通过您的设置捆绑到最终 JAR 中的,而且我认为它不包含所需的所有内容(当然我可能错了)。

实际上,我什至不会尝试修复您当前的设置。要创建可执行 jar,您应该更喜欢组装插件。例如,请参阅this recent answer。请使用建议的配置修改您的pom.xml(这将需要 30 秒),然后重试。然后,请使用新的结果/错误、pom.xml 和清单更新您的问题。

【讨论】:

  • 我实际上是在使用程序集插件来复制配置文件和一些部署脚本。我什至不知道是否可以在 jar 中捆绑依赖项。无论如何,我更喜欢将它们放在外面,因为我有很多依赖项
【解决方案2】:

我创建了一个新的 Maven 存储库,重新构建了所有 Maven 依赖项,并且不知何故解决了这个问题。

我不知道这是怎么发生的,因为我可以在没有 jar 的情况下运行......

不过还是谢谢你的帮助

【讨论】:

    猜你喜欢
    • 2013-03-05
    • 2017-08-21
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多