欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

将idea项目使用exe4j打包成exe文件,带jre,jdk环境

程序员文章站 2022-03-30 22:58:16
...

1.将项目打包成jar

  1. 新建java或maven项目,编写可执行的main文件
  2. 打包jar文件

将idea项目使用exe4j打包成exe文件,带jre,jdk环境

将idea项目使用exe4j打包成exe文件,带jre,jdk环境

选择项目和main文件

将idea项目使用exe4j打包成exe文件,带jre,jdk环境

输出报名和位置

将idea项目使用exe4j打包成exe文件,带jre,jdk环境

 设置结束,下一步导出

将idea项目使用exe4j打包成exe文件,带jre,jdk环境

 

将idea项目使用exe4j打包成exe文件,带jre,jdk环境

 导出后会在

将idea项目使用exe4j打包成exe文件,带jre,jdk环境

 刚才设置的位置有个jar包,到此,jar包导出完成

2.将jar包转成exe文件

exe4j的下载,安装,**

https://www.cnblogs.com/jepson6669/p/9211208.html

直接使用我参考的文档,还不错

https://wenku.baidu.com/view/e7ed6741b307e87101f696d4.html

 注意:

将idea项目使用exe4j打包成exe文件,带jre,jdk环境

 文章的这个位置,一定是 ./jre 表示,相对路径,所以要把你的jdk下的jre复制到你的输出目录下,即同级

将idea项目使用exe4j打包成exe文件,带jre,jdk环境

 这是为没有jdk环境的机器使用的

===========================================代码附录,没啥意义================================

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

/**
 * 获取html中的图片
 *
 * @author Zeng zhiqiang
 * @version V1.0 创建时间: 2020/9/24 15:01 Copyright 2020 by WiteMedia
 */
public class PickPictureUtil {

  public static void run(String  text) throws Exception {
//    String fileUrl = "C:\\Users\\hy\\IdeaProjects\\jarvis-cloud\\youtube-server\\src\\main\\java\\com\\witemedia\\util\\aaa.txt";
//
//    String s = readTxtFile(fileUrl);
    //System.out.println(s);

//    JFrame f = new JFrame("图片抓取");
//    f.setSize(400, 300);
//    f.setLocation(200, 200);
//
//    f.setLayout(new FlowLayout());
//
//
//    JLabel lName = new JLabel("账号:");
//    // 输入框
//    JTextField tfName = new JTextField("");
//    tfName.setText("请输入账号");
//    tfName.setPreferredSize(new Dimension(80, 30));
//
//
//    f.add(lName);
//    f.add(tfName);
//
//    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//    f.setVisible(true);
//
//
//    String s = tfName.getText();

    System.out.println(text);
    //Jsoup解析html
    Document document = Jsoup.parse(text);

    List<String> nameList = new ArrayList<>();
    Elements value = document.getElementsByAttribute("value");
    value.forEach(v->{
      String string = v.toString();
      String split = string.split("value=")[1];
      String substring = split.substring(1, split.length() - 2);
      nameList.add(substring);
    });

    List<String> urlList = new ArrayList<>();
    Elements src = document.getElementsByAttribute("src");
    src.forEach(sr->{
      String string = sr.toString();
      String split = string.split("src=")[1];
      int png = split.lastIndexOf("png");
      String substring = split.substring(1, png+3);
      urlList.add(substring);
    });

    //创建文件夹
    //File rootFile=new File("D:\\图片下载");
    //如果文件夹不存在
//    if(!rootFile.exists()){
//      rootFile.mkdir();
//    }

    File directory = new File("图片下载");
        if(!directory.exists()){
          directory.mkdir();
    }
    String absolutePath = directory.getAbsolutePath();

    for (int i = 0;i<urlList.size();i++) {
      download(urlList.get(i),absolutePath + "/" + nameList.get(i));
    }
    System.out.println("获取图片完成");
  }

  public static void download(String urlString, String fileName) throws Exception {
    // 构造URL
    URL url = new URL(urlString);
    // 打开连接
    URLConnection con = url.openConnection();
    // 输入流
    InputStream is = con.getInputStream();
    // 1K的数据缓冲
    byte[] bs = new byte[1024];
    // 读取到的数据长度
    int len;

    // 输出的文件流
    String filename =  fileName + ".png";  //下载路径及下载图片名称
    File file = new File(filename);
    FileOutputStream os = new FileOutputStream(file, true);
    // 开始读取
    while ((len = is.read(bs)) != -1) {
      os.write(bs, 0, len);
    }
    //System.out.println(i);
    // 完毕,关闭所有链接
    os.close();
    is.close();
  }



  public static String  readTxtFile(String filePath){
    StringBuffer sb = new StringBuffer();
    try {
      String encoding="GBK";
      File file=new File(filePath);
      if(file.isFile() && file.exists()){ //判断文件是否存在
        InputStreamReader read = new InputStreamReader(
            new FileInputStream(file),encoding);//考虑到编码格式
        BufferedReader bufferedReader = new BufferedReader(read);
        String lineTxt = null;
        while((lineTxt = bufferedReader.readLine()) != null){
          //System.out.println(lineTxt);
          sb.append(lineTxt);
        }
        read.close();
      }else{
        System.out.println("找不到指定的文件");
      }
    } catch (Exception e) {
      System.out.println("读取文件内容出错");
      e.printStackTrace();
    }

    return sb.toString();
  }

}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


class Listen implements ActionListener{
  public Listen(){
  }

  public Listen(JTextField jt){
    this.jt = jt;
  }
  private JTextField jt;

  //ActionListener用来响应用户点击按钮
  private static JFrame frame;
  public void actionPerformed(ActionEvent e) {  //定义处理事件的方法
    // TODO Auto-generated method stub
    String name=e.getActionCommand();//返回与此动作相关的命令字符串
    if(name.equals("开始任务")){
      //JOptionPane.showMessageDialog(frame, "登录失败","提示",JOptionPane.ERROR_MESSAGE);
      try {
        PickPictureUtil.run(jt.getText());
      } catch (Exception ex) {
        ex.printStackTrace();
      }
    } else if(name.equals("退出")){
      JOptionPane.showMessageDialog(frame, "确定要退出吗","提示",JOptionPane.INFORMATION_MESSAGE);
      System.exit(0); //退出
    }
  }
}
public  class text1 extends Listen {
  public static void main(String[] args) {
    JFrame jf=new JFrame("图片抓取");

//    jf.setSize(800, 300);
//    jf.setLocation(200, 200);

    JLabel jl=new JLabel("请输入html的内容");
    JTextField t1=new JTextField(800);
    //t1.setSize(800,200);
    //JLabel j2=new JLabel("密码");
    //JPasswordField t2=new JPasswordField(12);
    JButton b1 =new JButton("开始任务");
    JButton b2 =new JButton("退出");
    JPanel jp=new JPanel();
    jp.add(jl);
    jp.add(t1);
    //jp.add(j2);
    //jp.add(t2);
    jp.add(b1);
    jp.add(b2);
    jf.add(jp);
    jf.setSize(400, 200);//宽 高
    //设置框架的位置
    jf.setLocation(700, 300);
    jf.setVisible(true);   //显示按钮

    //String text = t1.getText();
    //System.out.println("sssssssssss" + text);
    Listen l=new Listen(t1);
    b1.addActionListener(l);
    b2.addActionListener(l);//按钮登录,退出共享绑定事件监控器
  }
}

 

相关标签: exe