exe4j生成exe文件后执行报错

java.lang.ClassNotFoundException: 
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
	at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:80)
	at com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94)

上面的是执行exe的错误代码

import javax.swing.*;
import java.awt.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.*;
import java.util.Timer;

import src.Student;

public class Demo2 extends JFrame {
    private final ImageIcon start = new ImageIcon("F:\\随机点名3.0\\src\\sourses\\开始.png");
    private final ImageIcon end = new ImageIcon("F:\\随机点名3.0\\src\\sourses\\停止.png");
    private final JButton jButton_start = new JButton(start);
    private final JButton jButton_end = new JButton(end);
    private final JButton jButton_test = new JButton("test");
    private ArrayList<String> names;
    //    private JPanel jPanel;
    private boolean isStart;
    private String randomName;

    public Demo2() throws HeadlessException, FileNotFoundException {
        init();
        initNames();
    }


    public void init() {
        //创建两个容器
        JPanel jp1 = new JPanel();
        JPanel jp2 = new JPanel();
        JPanel jp3 = new JPanel();
        //创建空容器用于占位
        JPanel jpNull = new JPanel();


        JLabel jLabelName = new JLabel();

        //开始和结束按钮的事件监听
        jButton_start.addActionListener(e -> {
            if (!isStart) {
                isStart = true;
                random_name(jLabelName);
            }
        });
        jButton_end.addActionListener(e -> {
            if (isStart) {
                isStart = false;
            } else {
                jLabelName.setText(null);
            }
        });
        jButton_test.addActionListener(e -> {
            JFrame jFrame_test = new JFrame();
            jFrame_test.setLayout(new GridLayout(2,1));

            //登录用组件
            JPanel jPanel = new JPanel();
            JPanel jPanel1 = new JPanel();
            Font font = new Font("微软雅黑", Font.PLAIN, 20);
            JLabel jLabel =new JLabel("密 码:");
            jLabel.setFont(font);
            JPasswordField jPasswordField = new JPasswordField(15);

//            jPasswordField.setText("请输入密码");
            jPasswordField.setForeground(Color.black);
            JButton jButton = new JButton("继续");

            //将所有组件加入面板
            jPanel.add(jLabel);
            jPanel.add(jPasswordField);
            jPanel1.add(jButton);
            jFrame_test.add(jPanel);
//            jFrame_test.add(jButton);
            jFrame_test.add(jPanel1);

            //初始化窗口
            jFrame_test.setSize(300, 200);
            jFrame_test.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
            jFrame_test.setResizable(false);
            jFrame_test.setTitle("输入密码开始测试");
            jFrame_test.setLocationRelativeTo(null);
            jFrame_test.setVisible(true);

            jButton.addActionListener(e1 -> {
                String password = new String(jPasswordField.getPassword());
//                System.out.println(password);
                if (password.equals("20041214")){
                    getRate();
                    jFrame_test.dispose();
                }else{
                    JFrame jFrame_fail = new JFrame();
                    jFrame_fail.setSize(300,200);
                    JLabel jLabel1 = new JLabel("密码错误");
                    jLabel.setForeground(Color.RED);
                    jFrame_fail.add(jLabel1);
                    jFrame_fail.setLocationRelativeTo(null);
                    jFrame_fail.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
                    jFrame_fail.setResizable(false);
                    jFrame_fail.setVisible(true);
                }
            });
        });


        setLayout(new GridLayout(3, 1));
        JLabel jLabel = new JLabel("被点名的是:");
        Font font = new Font("微软雅黑", Font.PLAIN, 20);
        Font font1 = new Font("微软雅黑", Font.BOLD, 100);
        jLabel.setFont(font);
        jLabelName.setFont(font1);
        //设置按钮
        jButton_start.setSize(200, 200);
        jButton_end.setSize(200, 200);
//        jp2.setSize(300,200);
        //添加按钮
        jp1.add(jLabel);
        jp1.add(jLabelName);
        jp2.add(jButton_start);
        jp2.add(jButton_end);
        jp3.add(jButton_test);
        jp3.setSize(600, 100);
        this.add(jp1);
        this.add(jp2);
        this.add(jp3);

        //设置窗口
        setLocationRelativeTo(null);
        setSize(600, 685);
//        setLocation(300, 200);
        setResizable(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

    //初始化人名单
    public void initNames() throws FileNotFoundException {
        names = new ArrayList<>();
        String path = "F:\\snakeGame\\src\\com\\test\\人名单.txt";
        InputStream inputStream = new FileInputStream(path);
        Scanner scanner = new Scanner(inputStream);

        while (scanner.hasNext()) {
            String name = scanner.nextLine();
//            System.out.println(name);
            if (!name.equals("赵斯琪") && !name.equals("常力争")) {
                names.add(name);
            }
        }
    }

    public void random_name(JLabel jLabel) {
        Random random = new Random();
        Timer timer = new Timer();
        //循环点名
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                int index = random.nextInt(names.size());
                randomName = names.get(index);
                jLabel.setText(randomName);
                if (!isStart) {
                    timer.cancel();
                }
            }
        };
        timer.scheduleAtFixedRate(timerTask, 0, 85);
    }

    //获得概率
    public void getRate() {
        //创建学生列表
        ArrayList<Student> students = new ArrayList<>();
        //进行循环,获得概率
        for (int i = 0; i < 1000; i++) {
            String name = this.randomName();
            System.out.println(this.randomName() + "\t" + "第" + (i + 1) + "次");
            addStudent(students, name);
        }

        DecimalFormat decimalFormat = new DecimalFormat(".00");
        double sum = 0;
        for (Student student : students) {
            System.out.println(student.getName() + ":" + student.getCount() + "次");
            double x = (double) student.getCount() / 1000 * 100;
            sum += x;
            String y = decimalFormat.format(x);
            System.out.println("概率:" + y + "%");
        }
        sum = sum / students.size();
        String sumS = decimalFormat.format(sum);
        System.out.println("共" + students.size() + "人");
        System.out.println("平均概率:" + sumS + "%");
    }

    private void addStudent(ArrayList<Student> students, String name) {
//        if (name.equals("赵斯琪") || name.equals("常力争")) {
//            return;
//        }

        //如果列表内没有数据,将获取到的第一个数据加入
        src.Student student = new Student(name);
        if (students.size() == 0) {
            student.setCount(1);
            students.add(student);
            return;
        }

        //遍历数组,如果传入的名字已经在列表内,将该学生出现次数加一
        for (int i = 0; i < students.size(); i++) {
            if (student.equals(students.get(i))) {
                int count = students.get(i).getCount();
                students.get(i).setCount(count + 1);
                return;
            }
        }

        //如果传入的名字不存在,加入一个新学生
        student.setCount(1);
        students.add(student);
    }

    private String randomName() {
        Random random = new Random();
        int index = random.nextInt(names.size());
        return names.get(index);
    }

    public static void main(String[] args) throws FileNotFoundException {
        Demo2 demo2 = new Demo2();
    }
}

上面是代码

是不是你的JDK环境没有配置呢,主要是path,classpath,在系统环境变量里面看看。

类不存在,围绕这个找一下原因

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632