将idea项目使用exe4j打包成exe文件,带jre,jdk环境
程序员文章站
2022-03-30 22:58:16
...
1.将项目打包成jar
- 新建java或maven项目,编写可执行的main文件
- 打包jar文件
选择项目和main文件
输出报名和位置
设置结束,下一步导出
导出后会在
刚才设置的位置有个jar包,到此,jar包导出完成
2.将jar包转成exe文件
exe4j的下载,安装,**
直接使用我参考的文档,还不错
注意:
文章的这个位置,一定是 ./jre 表示,相对路径,所以要把你的jdk下的jre复制到你的输出目录下,即同级
这是为没有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);//按钮登录,退出共享绑定事件监控器
}
}