IDEA 打包 可执行 Jar 程序

本文导读

  • Java SE 项目通常会用来封装工具类,此时如果要打包(Jar包),建议使用Maven更加简单,本文不做描述
  • Java SE 项目如果使用了awt、swing,Java FX,则可以用来做GUI程序;否则可以做普通的后台程序,即不需要用户界面的程序。无论哪种都应该导出为可执行Jar文件,即类似exe程序一样,双击即可运行。可执行Jar程序放到任何安装了Java JRE或者JDK电脑上双击都能运行
  • 本文以一个Java SE 普通后台程序和一个Java FX GUI程序为例进行说明

Java SE 应用

新建应用




应用编码

  • 程序很简单,以后双击jar文件时,就会写日志,支持用户输入命令行参数,用户输入什么,全部打印到日志文件中


package com.lct.utils;

import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ResourceBundle;

/**
 * Created by Administrator on 2018/6/29 0029.
 * 日志工具类
 */
public class LogWmxUtils {

    private static final String LOG_DIR_PATH;

    static {
        ResourceBundle resourceBundle = ResourceBundle.getBundle("system");
        LOG_DIR_PATH = resourceBundle.getString("logDirPath");
    }

    /**
     * 写入日志
     *
     * @param message
     */
    public static final void writeLine(String message) {
        try {
            if (StringUtils.isNotBlank(message)) {

                File logDir = new File(LOG_DIR_PATH);
                if (!logDir.exists()) {
                    logDir.mkdirs();
                }
                SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
                SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                String logName = simpleDateFormat1.format(new Date());
                String messageHead = simpleDateFormat2.format(new Date());

                File logFile = new File(logDir, logName + ".log");
                FileWriter fileWriter = new FileWriter(logFile, true);
                fileWriter.write(messageHead + "" + message + "\r\n");
                fileWriter.flush();
                fileWriter.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
package com.lct.main;

import com.lct.utils.LogWmxUtils;

import java.util.concurrent.TimeUnit;

/**
 * Created by Administrator on 2018/6/29 0029.
 * 应用程序入口
 * 程序执行完成后,就会自动退出
 */
public class MainApp {
    public static void main(String[] args) {
        try {
            /** 主要介绍方式,所以编码很简单*/
            StringBuffer stringBuffer = new StringBuffer();
            if (args != null && args.length > 0) {
                stringBuffer.append("User input parameters:");
                for (String arg : args) {
                    stringBuffer.append(arg + " ");
                }
            } else {
                stringBuffer.append("User input parameters are empty");
            }
            LogWmxUtils.writeLine(stringBuffer.toString());
            /** 延时10秒,模拟程序执行任务*/
            TimeUnit.SECONDS.sleep(10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

生成jar可执行文件








运行测试

  • 可以将此 可执行jar文件 拷贝到任意安装了Java 环境的电脑上运行,如下所示双击运行之后,可在任务管理器中看到一个"javaw.exe"的虚拟机进程


  • 如果china.jar在已经运行的情况下,再次双击运行时,则会新开进程进行运行,这时任务管理器就会看到多个进程在运行





Java FX应用

新建项目

  • IDEA 新建Java FX 应用可以参考《IDEA JavaFX 开发入门》,此处不再累赘
  • 这里只讲 打包成 可执行 Jar文件,其实与上面的 Java SE应用打包完全一致



生成jar可执行文件

  • 下面是它默认打包的形式,用它可以直接生产exe程序,但是这里暂时先不讲,选中之后点击红色的横杆删除掉,现在不讲这种方式








运行测试

  • 同样直接双击运行即可,可以看到窗口,也可以看到任务管理器中的javaw.exe进程
  • 同样应用中可以做任意操作,如通信,网络编程,文件上传下载,UDP监听等等,照样mian方法可以接收参数







猜你喜欢

转载自blog.csdn.net/wangmx1993328/article/details/80859754