muhuan
V2EX  ›  Java

springboot 加壳

  •  
  •   muhuan · Jan 5, 2022 · 5348 views
    This topic created in 1614 days ago, the information mentioned may be changed or developed.
    springboot 可以方便的开发 web 应用,有什么办法可以快速的包装一个壳,例如在 mac 下,生成一个图标,点击启动应用,打开一个 webview 的窗口,加载这个地址?

    记得之前好像有个应用可以生成一个打开指定 url 的图标,但是少了一步启动。
    25 replies    2022-01-20 13:32:52 +08:00
    muhuan
        1
    muhuan  
    OP
       Jan 5, 2022
    考虑过 javafx ,也尝试了,打包上不是很方便,同时因为依赖的一些库非模块化,实施起来并不是很方便。
    xianyv
        2
    xianyv  
       Jan 5, 2022
    我只知道 vue 可以被打包成一个 windows 桌面应用,就是在外层加了一个壳
    mineralsalt
        3
    mineralsalt  
       Jan 5, 2022
    @muhuan javafx 应该是最好用的, 可以把 springboot 整合到一个程序里面, 而且 javafx 也自带了比较好用的浏览器组件
    SuperXRay
        4
    SuperXRay  
       Jan 5, 2022
    直接存个 shell 命令
    SuperXRay
        5
    SuperXRay  
       Jan 5, 2022
    nohup java -jar 启动 jar 包后,服务开启来可能还要个时间,延迟一点时间后 open ‘http:loacalhost:8080’ 就可以启动网页了
    orangie
        6
    orangie  
       Jan 5, 2022
    ……以 springboot 的启动速度,还是不要折磨用户了吧。如果实在想做,写个 shell 脚本就可以启动 jar 再打开浏览器。
    cweijan
        7
    cweijan  
       Jan 5, 2022
    那不就是只有 javafx 吗, 不然就只能用 Electron 套壳, 启动时使用 Java 命令启动 jar 包.
    threeEggs123
        8
    threeEggs123  
       Jan 5, 2022 via Android
    j2exe
    yuhuigreed
        9
    yuhuigreed  
       Jan 5, 2022
    jpackage?
    mitsuizzz
        10
    mitsuizzz  
       Jan 5, 2022
    我猜你需要 jframe ?
    VensonEEE
        11
    VensonEEE  
       Jan 5, 2022
    electron 调用 shell 启动 springboot ,前端 loading 到接口有数据为止
    ntdll
        12
    ntdll  
       Jan 5, 2022
    Java 9 以上包含了 jlink 用于裁剪 JRE 以便于分发,但是由于许多第三方依赖性并非采用模块化设计,因此实际使用时仍有困难。

    所以可以尝试下这款 Gradle 插件: https://github.com/beryx/badass-jlink-plugin

    我自己使用过,虽然并不算很方便,但也只要自己编写一些模块的规则,也可以很方便的编译出 standalone
    weaponc
        13
    weaponc  
       Jan 5, 2022
    试试 node 吧
    chihiro2014
        14
    chihiro2014  
       Jan 5, 2022
    graalvm
    kingfalse
        15
    kingfalse  
       Jan 5, 2022 via Android
    jar2exe ,支持 boot ,mac linux win 三个平台都支持
    kingfalse
        16
    kingfalse  
       Jan 5, 2022 via Android
    @kingfalse 补充一下,要打开 URL 最好考虑下自带浏览器,这方面的话 jbrowser 做的很好很完善,
    muhuan
        17
    muhuan  
    OP
       Jan 5, 2022
    @gam2046 感谢,我自己也尝试过,打出的包运行不起来;
    muhuan
        18
    muhuan  
    OP
       Jan 5, 2022
    @chihiro2014 速度确实很快
    muhuan
        19
    muhuan  
    OP
       Jan 5, 2022
    @mineralsalt 模块化问题比较难解决,依赖的很多 lib 都非模块化的
    muhuan
        20
    muhuan  
    OP
       Jan 5, 2022
    @SuperXRay 也不是不行,哈哈
    mineralsalt
        21
    mineralsalt  
       Jan 5, 2022   ❤️ 1
    @muhuan javafx 可以不使用模块化打包啊
    muhuan
        22
    muhuan  
    OP
       Jan 5, 2022
    @mineralsalt 尝试了 https://github.com/beryx/badass-jlink-plugin ,没有成功,打出的包跑不起来
    ntdll
        23
    ntdll  
       Jan 6, 2022
    @muhuan 这个你需要补一下关于模块的基本概念,通常来说出问题的部分大多用了 SPI ,自己多跑几次,加上相关的 uses/provides/requires 就可以了,并不会很麻烦。
    muhuan
        24
    muhuan  
    OP
       Jan 6, 2022
    @mineralsalt 可以了,之前没有按照他的例子走,直接按照文档配置,走弯路了
    seanzxx
        25
    seanzxx  
       Jan 20, 2022
    可以试试 java 17 自带的 jpackage 呀,
    https://openjdk.java.net/jeps/392

    可以打包成 msi ,exe ,dmg ,pkg 等,跨平台支持
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2902 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 12:35 · PVG 20:35 · LAX 05:35 · JFK 08:35
    ♥ Do have faith in what you're doing.