求问:怎么编译运行高版本的 javac - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
passer9527
V2EX    Java

求问:怎么编译运行高版本的 javac

  •  
  •   passer9527 2023-06-09 10:14:33 +08:00 2383 次点击
    这是一个创建于 907 天前的主题,其中的信息可能已经有所发展或是发生改变。

    jdk8(包含)之前的,把 javac 代码拷出来 放到 idea 中,打开就能跑起来了,

    但是 jdk9 (包含)之后,由于模块化,就跑不起来了,各种错误。

    网上的所有资料都是 java8 之前的,包含 2023 新写的文章,都是 java8, 感觉就是相互抄过去抄过来,完全找不到有价值的信息。英文资料虽然没有垃圾信息,但是也没有任何相关的新。

    13 条回复    2023-06-09 22:02:08 +08:00
    jamezee
        1
    jamezee  
       2023-06-09 10:38:50 +08:00
    深入理解 Java 虚拟机(第三版)里有写
    passer9527
        2
    passer9527  
    OP
       2023-06-09 10:46:47 +08:00
    @jamezee 里面用的是 java8 的,不是我要的
    jamezee
        3
    jamezee  
       2023-06-09 10:49:34 +08:00
    @passer9527 第三版是 openjdk12 ,你说的是第二版吧
    passer9527
        4
    passer9527  
    OP
       2023-06-09 10:50:56 +08:00
    @jamezee 说的就是第三版,我说的是单独运行 javac ,不是 调试整个 jvm
    c2const
        5
    c2const  
       2023-06-09 11:03:35 +08:00
    之前接触过一个 java 项目,jdk11 的,JavaCompiler jc = ToolProvider.getSystemJavaCompiler(); ....
    可以直接编译 java 源码到 class 文件。
    那项目还打包 AOT 编译到二进制了。
    DsuineGP
        6
    DsuineGP  
       2023-06-09 11:13:31 +08:00
    看起来 jdk11 的 javac 还依赖了 $JAVA_HOME/lib/jli 这个动态库, 你拷贝的时候把这个库也一起带着, 保持相对的路径就行
    ----
    Load command 18
    cmd LC_RPATH
    cmdsize 40
    path @loader_path/../lib/jli (offset 12)
    zhady009
        7
    zhady009  
       2023-06-09 12:35:10 +08:00 via iPhone
    啥报错信息都没 猜
    sunxiaping521
        8
    sunxiaping521  
       2023-06-09 12:43:20 +08:00
    为什么不直接用 JDK 11 ?
    siweipancc
        9
    siweipancc  
       2023-06-09 13:46:59 +08:00 via iPhone
    ……你是单独执行 class 文件?
    passer9527
        10
    passer9527  
    OP
       2023-06-09 14:53:15 +08:00
    @siweipancc 单独运行 javac 源码
    passer9527
        11
    passer9527  
    OP
       2023-06-09 18:21:18 +08:00
    自己折腾了一天,搞定了,确实没有搜到资料,靠自己从根源出发,推理下流程,然后用了些小 trick ,完美调试。
    java17 的 javac 有 10 万行。

    $ cloc src
    406 text files.
    405 unique files.
    4 files ignored.

    1 error:
    Line count, exceeded timeout: src/com/sun/tools/javac/tree/Pretty.java

    github.com/AlDanial/cloc v 1.94 T=1.70 s (237.7 files/s, 106246.2 lines/s)
    -------------------------------------------------------------------------------
    Language files blank comment code
    -------------------------------------------------------------------------------
    Java 390 18078 45625 105495
    Properties 15 3092 2912 5833
    -------------------------------------------------------------------------------
    SUM: 405 21170 48537 111328
    -------------------------------------------------------------------------------
    siweipancc
        12
    siweipancc  
       2023-06-09 19:22:03 +08:00 via iPhone
    @passer9527 (;Д`)为什么要这么做,你换个 maven 啊,然后看看 maven trace compile
    xyooyx
        13
    xyooyx  
       2023-06-09 22:02:08 +08:00 via iPhone
    idea 不是可以加载多环境吗。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5347 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 01:31 PVG 09:31 LAX 17:31 JFK 20:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86