java - 转移到maven后,我编译的jar文件无法运行

标签 java maven

我实际上花了很长时间才注意到。当我在 netbeans 中运行该项目时,它按预期工作。但是,当我执行 Build 时,我得到的 PROJECTNAME-1.0-SNAPSHOT.jar 文件没有执行任何操作。打开包装后,它看起来像这样:

image description

这很可疑,在 Maven 之前,我编译的文件看起来像这样:

image description

Main 类不应该位于 jar 文件根目录中吗? JVM 如何知道要运行哪个主类?

MANIFEST.MF 也有一些令人不安的地方:

旧 list

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.1
Created-By: 1.7.0_45-b18 (Oracle Corporation)
Class-Path: lib/alloy.jar lib/jna-platform.jar lib/jna.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: Main

新 list

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: Jakub
Build-Jdk: 1.8.0_31

似乎缺少Main-Class条目...

最佳答案

使用maven-jar-plugin使您的 jar 可执行。对我来说,实际代码如下:

 <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.5</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
              <mainClass>my.main.class</mainClass>
            </manifest>
          </archive>
          <outputDirectory>${project.build.directory}/result</outputDirectory>
        </configuration>
      </plugin>

也有用 exec-maven-plugin :

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.3.2</version>
    <configuration>
      <mainClass>my.main.class</mainClass>
      <!--
      <commandlineArgs>-d 5409  -c 467 -t 2  -dlg true</commandlineArgs>
      -->
    </configuration>
  </plugin>

关于java - 转移到maven后,我编译的jar文件无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29075775/

相关文章:

maven - Maven 列表(传递地)继承了父 POM 吗?

java - DateFormat 格式方法不显示特定时区的解析日期

java - 如何在gradle build中正确添加jaxb2 setter插件?

android - Android 支持 Maven 存储库中缺少 DrawerLayout

java - 无法在 hibernate 状态下提取结果?

Maven - 将特定依赖项及其传递依赖项复制到给定位置

java - 创建使用 Maven 构建的项目的 jar?

java - 什么是 PECS(生产者扩展消费者 super )?

java - 我如何知道 Scene2d actor 是否具有舞台坐标或组的本地坐标

java - 如何在android中实现一个按钮onclick的两个功能