java - 来自 maven swing 项目的可执行 jar

标签 java swing maven executable-jar

我是 maven 的新手,我最近开发了一个 swing 项目,同时使用 maven 来管理依赖项。

我现在想做的是打包我的项目以供分发,并能够将文件传输到另一台计算机/笔记本电脑以供他人打开和使用。

根据我的研究,我了解到我需要使用 assembly 或 shade maven 插件来打包项目。

我已经尝试了这两种方法并且能够得到一个可执行的 jar,但我尝试运行它,但没有任何反应。

这是我的项目结构HERE

这是我使用 shade 插件时的 POM.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>1</groupId>
  <artifactId>Fin</artifactId>
  <version>0.0.6-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>AinsfieldFin</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.14</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.14</version>
    </dependency>

    <dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j</artifactId>
    <version>2.8.0</version>
    </dependency>

    <dependency>
     <groupId>org.apache.xmlgraphics</groupId>
     <artifactId>batik-bridge</artifactId>
     <version>1.7</version>
     </dependency>
  </dependencies>



  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.4.3</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>com.Fin.index</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <argLine>-Dfile.encoding=UTF-8</argLine>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <Version>3.1</Version>
                </configuration>
            </plugin>

    </plugins>
  </build>
</project>

这是文件index.java

package com.Fin;

//swing imports

import com.Fin.process.ManipulationExcel;
import com.Fin.process.ManipulationWord;


public class index {

    //declarations


    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    index window = new index();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public index() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
          // present layout and app functions   
    }
}

我正在使用 eclipse 作为我的 IDE

预先感谢您提供的任何帮助

已解决:我的 pom.xml 现在看起来像这样:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>1</groupId>
  <artifactId>Fin</artifactId>
  <version>0.1.1</version>
  <packaging>jar</packaging>

  <name>AinsfieldFin</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.14</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.14</version>
    </dependency>

    <dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j</artifactId>
    <version>2.8.0</version>
    </dependency>

    <dependency>
     <groupId>org.apache.xmlgraphics</groupId>
     <artifactId>batik-bridge</artifactId>
     <version>1.7</version>
     </dependency>
  </dependencies>



  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.4.3</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>com.Fin.index</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
                <!-- Build an executable JAR -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>com.Fin.index</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <argLine>-Dfile.encoding=UTF-8</argLine>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <Version>3.1</Version>
                </configuration>
            </plugin>

    </plugins>
  </build>
</project>

最佳答案

您可以通过在 pom.xml 中使用此部分来完成此操作(更改您的主类位置:

 <build>
        <plugins>
            <plugin>
                <!-- Build an executable JAR -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>com.your.mainClass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

关于java - 来自 maven swing 项目的可执行 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41608280/

相关文章:

java - 从 DTD 生成 XML 绑定(bind)代码的最佳方法是什么?

java - Swing 删除游戏对象

java - 我们如何在 Scala 中编写 maven2 插件?

java - Windows %path% 环境变量中出现奇怪的空格

java - 使用自定义 ClassPathResource 配置 Spring 4 PropertySourcesPlaceholderConfigurer

java - MaterialDrawer - 更新 secondaryDrawerItem 的徽章

java - 使用 Findbugs 编写检测器以搜索 "System.out.println"的用途

java - 如何防止 Java 图形程序在更新窗口时窃取焦点?

java - 在 JTextField 中插入值后,不会显示它们的随机值。我该如何解决?

java - 半透明的 jPanels