ko1haha
V2EX  ›  Java

Java 转 native 究竟行不行?无需精通 graalvm native-image 配置就能打包 native exe 方法分享。

  •  
  •   ko1haha · 19h 38m ago · 1282 views

    编译了一天一夜!

    总算把我的老 javafx 项目编译成正宗的 exe 了。

    花费这么长时间,也有我设备的问题。

    8G 上网本(主力机跑别的),空闲内存只有一半。

    配置点虚拟内存、换成 opencode web 版本,腾出点内存,继续搞。

    没错,agent 时代,谁还一个人苦哈哈地编译啊。

    当然是让人工智能给我打工。

    方法就是:先准备一份可以运行的 java 版本,让 opencode 调用 java.exe 启动主类。

    然后,让它把十几个 jar 用 native-image 编译成 exe ,成功后 opencode 自动调起并分析错误,不断迭代。

    这很厉害,我都不知道哪里去找 log, 手动把 exe 拖进 cmd 也没有日志。

    终于,javafx 的窗口跑出来了,里面 webview (webkit) 能显示,但一操作就闪退崩溃。

    紧接着发现,opencode 竟然在分析汇编指令……

    继续,自动迭代……

    编译一次半小时,必须交给没有感情的机器人!

    继续跑了一两个小时,终于修好了,操作 webview 内容不再崩溃(但是内存浮动明显,比 java8 还糙,简单操作竟然在 300mb-900mb 间浮动!)。

    仍有很多功能缺失:打不开系统的文件选择器( awt/jna 又出问题?)、没有正确启动 web 服务(开着纯血 java 版陪跑!)。

    还是得放弃 javafx 了,没啥优势。

    如果舍不得生态的话,就做成 web 服务。

    明天再试,机器太烫了。

    9 replies    2026-08-18 14:53:28 +08:00
    jlkm2010
        1
    jlkm2010  
       19h 17m ago   ❤️ 1
    Java 不要折腾转 native ,这不是 java 擅长的领域
    wenhuibrave
        2
    wenhuibrave  
       19h 9m ago
    Java 搞 native ,限制太多了,给自己上难度啊
    Oktfolio
        3
    Oktfolio  
       18h 9m ago
    没必要,直接叫 AI 重写吧
    yidinghe
        4
    yidinghe  
    PRO
       17h 12m ago via Android
    如今各种 webview 套壳的框架,吃内存比 Java 多多了。
    msg7086
        5
    msg7086  
       15h 2m ago
    个人看法,native 适合新项目,各种组件都适配好了可以无痛上的那种。老项目包袱大,上起来不划算。
    cheng6563
        6
    cheng6563  
       9h 19m ago
    你要不算算你编译花了多久。
    wuhunyu
        7
    wuhunyu  
       5h 52m ago
    要不然咱就换一种语言, 用 go 吧
    skwyl
        8
    skwyl  
       4h 36m ago
    换吧,我的 agent 都从 java 转 go 了,java 不适合做这种桌面端的东西,也不适合搞小工具
    j1132888093
        9
    j1132888093  
       4h 27m ago
    我们迁了一大半服务了,就是打包慢了点,目前 32C32G 打包,启动从分钟级到秒级了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3366 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 11:20 · PVG 19:20 · LAX 04:20 · JFK 07:20
    ♥ Do have faith in what you're doing.