idea环境下如何打包可运行jar?

Java程序员:IDEA中快速打包可执行jar的步骤,
本文介绍了如何在Java开发环境中,利用IDEA和Maven的maven-assembly-plugin插件,创建并打包一个可直接执行的jar文件,包括代码示例和打包过程的详细步骤。

工作中有时候偶尔写一些工具类、小程序,可是java程序员制作一个可运行jar实在折腾,利用idea开发环境,可以快速打包自己的可运行jar。具体怎么操作呢?

创建一个空白的java项目并完成自己的程序开发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完成java代码:

/**
 * 测试窗口
 * @author binbin
 * @date 2023/9/27 10:29
 */
public class InfoFrame extends JFrame {
    public InfoFrame() {
        setTitle("System Information");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 200);

        //居中显示
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setLocation((screenSize.width - getWidth())/2, (screenSize.height - getHeight())/2);

        //初始化菜单
        JMenuBar bar = new JMenuBar();
        JMenu menu = new JMenu("帮助");
        JMenuItem exitItem = new JMenuItem("退出");
        exitItem.addActionListener(e -> {
            System.exit(0);
        });
        menu.add(exitItem);
        bar.add(menu);
        setJMenuBar(bar);

        //初始化系统信息
        JTextArea infoTextArea = new JTextArea(6, 10);
        infoTextArea.setText(getSystemInfo());
        infoTextArea.setEditable(false);
        add(new JScrollPane(infoTextArea));
    }

    private String getSystemInfo() {
        StringBuffer b = new StringBuffer();
        b.append("系统系统:").append(System.getProperty("os.name")).append("\r\n");
        b.append("系统版本:").append(System.getProperty("os.version")).append("\r\n");
        b.append("系统架构:").append(System.getProperty("os.arch")).append("\r\n");
        b.append("用户名称:").append(System.getProperty("user.name")).append("\r\n");
        b.append("用户主目录:").append(System.getProperty("user.home")).append("\r\n");
        b.append("当前工作目录:").append(System.getProperty("user.dir")).append("\r\n");
        return b.toString();
    }
}

public class App
{
    public static void main( String[] args )
    {
        EventQueue.invokeLater(() -> {
            new InfoFrame().setVisible(true);
        });
    }
}

代码结构如下:
在这里插入图片描述

引入maven-assembly-plugin插件打包

<?xml version="1.0" encoding="UTF-8"?>

<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>org.hbin</groupId>
  <artifactId>info</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>info</name>
  <url>www.binbin.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>


  <build>
    <plugins>
      <!-- 使用maven-assembly-plugin插件打包 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <archive>
            <manifest>
              <!--主类 -->
              <mainClass>org.hbin.App</mainClass>
            </manifest>
          </archive>
          <descriptorRefs>
            <!-- 可执行jar名称结尾-->
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

在这里插入图片描述

执行maven package

执行maven package命令,target目录将生成一个以jar-with-dependencies结尾的可直接执行jar。
运行命令:

> java -jar info-1.0-SNAPSHOT-jar-with-dependencies.jar

在这里插入图片描述

文档包和源码包

<!--生成doc jar包-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
            <!-- 不让像@Param 这种后面没写值的东西 报错。-->
            <configuration>
                <additionalJOption>-Xdoclint:none</additionalJOption>
            </configuration>
        </execution>
    </executions>
</plugin>

<!--生成源码jar包-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <executions>
        <execution>
            <id>attach-sources</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

下次再有测试、运营或者其他部门的同事找你做工具,知道怎样快速制作可执行jar了吧?

### IntelliJ IDEA 中 JavaFX 项目打包可运行 JAR 文件的教程 在 IntelliJ IDEA 中将 JavaFX 项目打包可运行JAR 文件需要一些特定的步骤,因为 JavaFX 不再包含在 JDK 中(从 JDK 11 开始),因此需要手动配置模块路径和依赖项[^1]。以下是详细的说明: #### 配置环境 1. **安装 JavaFX SDK**:下载并解压 JavaFX SDK,并将其放置在一个固定目录下,例如 `D:\software\javafx-sdk-17.0.13`[^2]。 2. **设置模块路径**:确保在运行或调试时通过命令行参数指定模块路径,例如: ```bash --module-path D:\software\javafx-sdk-17.0.13\lib --add-modules javafx.controls,javafx.fxml ``` #### 创建 JavaFX 项目 1. 打开 IntelliJ IDEA,选择 `File > New > Project`,然后选择 `JavaFX` 模板[^4]。 2. 配置项目的 JDK 版本(建议使用 JDK 11 或更高版本)以及 JavaFX SDK 的模块路径。 #### 添加依赖项 1. 在项目中导入 JavaFX SDK 的库文件。可以通过以下方式完成: - 转到 `File > Project Structure > Modules > Dependencies`。 - 点击 `+` 按钮,选择 `JARS or Directories`,然后添加 JavaFX SDK 的 `lib` 目录下的所有 `.jar` 文件[^3]。 #### 编辑功能 1. 根据需求开发 JavaFX 应用程序的功能。 2. 如果使用了 FXML 文件,可以通过右键点击 FXML 文件并选择 `Open in Scene Builder` 来设计界面[^3]。 3. 确保所有资源文件(如 FXML 文件、图片等)与生成的类文件位于同一路径下,以避免运行时找不到资源的问题。 #### 配置工件 (Artifact) 1. 转到 `File > Project Structure > Artifacts`。 2. 点击 `+` 按钮,选择 `JavaFX Application`,然后从模块列表中选择主模块[^4]。 3. 在 `Output Layout` 部分,点击加号将项目中用到的所有外部 JAR 包添加进来,包括 JavaFX SDK 的库文件[^3]。 4. 确保主类已正确配置为项目的入口点。 #### 构建 JAR 文件 1. 转到 `Build > Build Artifacts > Build`。 2. 构建完成后,可以在项目的 `out/artifacts/` 目录下找到生成的 JAR 文件[^4]。 #### 运行 JAR 文件 由于 JavaFX 不再包含在标准 JDK 中,运行生成的 JAR 文件时需要显式指定模块路径。例如: ```bash java --module-path D:\software\javafx-sdk-17.0.13\lib --add-modules javafx.controls,javafx.fxml -jar your-app.jar ``` #### 示例代码 以下是一个简单的 JavaFX 主类示例: ```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class MainApp extends Application { @Override public void start(Stage primaryStage) { Label label = new Label("Hello, JavaFX!"); StackPane root = new StackPane(); root.getChildren().add(label); Scene scene = new Scene(root, 300, 200); primaryStage.setTitle("JavaFX Example"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` ### 注意事项 - 确保在运行时提供的模块路径与构建时一致[^2]。 - 如果项目中有多个 FXML 文件或其他资源文件,建议将它们与生成的类文件放在同一路径下,以避免加载失败。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值