You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Launch4j将Jar转Exe遭谷歌报毒,求解决方案及替代工具

问题解答

Launch4j是否携带病毒?

Launch4j本身是开源免费的合法工具,不存在病毒。杀毒软件误报是因为大量恶意软件也采用类似Jar打包成Exe的方式,导致这类程序的特征被标记为可疑。

如何避免生成的Exe被判定为病毒?

  • 给Exe添加数字签名:正规的代码签名证书能让杀毒软件识别程序合法性,个人开发者可申请免费代码签名证书,或使用自签名证书(需用户手动信任程序)。
  • 提交误报申诉:在谷歌安全平台提交你的Exe文件,说明这是合法Java桌面程序,审核通过后会解除恶意标记。
  • 优化Launch4j配置:使用自定义独特图标,避免默认图标;选择绑定系统本地JRE而非打包JRE到Exe中,减少与恶意程序的特征重合。
  • 使用最新版Launch4j:旧版本可能存在已被杀毒软件标记的特征,更新到最新版本能降低误报概率。

替代Jar转Exe的工具

  • JSmooth:与Launch4j功能类似的开源工具,支持多种JRE检测和启动模式。
  • Excelsior JET:商业级工具,将Java代码编译为本地二进制文件,误报率极低,但需付费。
  • Jar2Exe:支持多种打包模式,有免费版和付费版,适配国内开发者使用习惯。
  • GraalVM Native Image:将Java程序编译为原生可执行文件,完全脱离JRE运行,文件结构更接近普通Exe,误报率低,适合轻量桌面程序。

相关代码

public class Main {
    public static void main(String[] args){
        new Frame();
    }
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Frame implements ActionListener {
    JLabel label;
    JTextField textbar;
    JButton button;

    Frame(){
        label = new JLabel("enter your age");
        label.setPreferredSize(new Dimension(300,200));
        label.setFont(new Font("nastaliq",Font.PLAIN,50));
        textbar = new JTextField();
        textbar.setPreferredSize(new Dimension(500,100));
        button = new JButton("submit");
        button.addActionListener(this);
        button.setFocusable(false);
        textbar.setPreferredSize(new Dimension(500,400));
        textbar.setFont(new Font("Arial",Font.PLAIN,100));
        textbar.setForeground(new Color(0, 148, 0));
        textbar.setBackground(new Color(0,0,0));
        textbar.setCaretColor(new Color(255,255,255));

        JFrame frame = new JFrame();
        frame.setLayout(new BorderLayout());
        frame.add(textbar,BorderLayout.CENTER);
        frame.add(button,BorderLayout.SOUTH);
        frame.add(label,BorderLayout.NORTH);

        frame.setDefaultCloseOperation(3);
        frame.setResizable(false);
        frame.setSize(500,500);
        frame.setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==button){
            label.setText("you are"+textbar.getText());
            button.setEnabled(false);
            textbar.setEditable(false);
        }
    }
}

内容的提问来源于stack exchange,提问作者MASEH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:46:07