V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
passer9527
V2EX  ›  Java

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

  •  
  •   passer9527 · Jun 9, 2023 · 2638 views
    This topic created in 1062 days ago, the information mentioned may be changed or developed.

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

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

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

    13 replies    2023-06-09 22:02:08 +08:00
    jamezee
        1
    jamezee  
       Jun 9, 2023
    深入理解 Java 虚拟机(第三版)里有写
    passer9527
        2
    passer9527  
    OP
       Jun 9, 2023
    @jamezee 里面用的是 java8 的,不是我要的
    jamezee
        3
    jamezee  
       Jun 9, 2023
    @passer9527 第三版是 openjdk12 ,你说的是第二版吧
    passer9527
        4
    passer9527  
    OP
       Jun 9, 2023
    @jamezee 说的就是第三版,我说的是单独运行 javac ,不是 调试整个 jvm
    c2const
        5
    c2const  
       Jun 9, 2023
    之前接触过一个 java 项目,jdk11 的,JavaCompiler jc = ToolProvider.getSystemJavaCompiler(); ....
    可以直接编译 java 源码到 class 文件。
    那项目还打包 AOT 编译到二进制了。
    DsuineGP
        6
    DsuineGP  
       Jun 9, 2023
    看起来 jdk11 的 javac 还依赖了 $JAVA_HOME/lib/jli 这个动态库, 你拷贝的时候把这个库也一起带着, 保持相对的路径就行
    ----
    Load command 18
    cmd LC_RPATH
    cmdsize 40
    path @loader_path/../lib/jli (offset 12)
    zhady009
        7
    zhady009  
       Jun 9, 2023 via iPhone
    啥报错信息都没 猜
    sunxiaping521
        8
    sunxiaping521  
       Jun 9, 2023
    为什么不直接用 JDK 11 ?
    siweipancc
        9
    siweipancc  
       Jun 9, 2023 via iPhone
    ……你是单独执行 class 文件?
    passer9527
        10
    passer9527  
    OP
       Jun 9, 2023
    @siweipancc 单独运行 javac 源码
    passer9527
        11
    passer9527  
    OP
       Jun 9, 2023
    自己折腾了一天,搞定了,确实没有搜到资料,靠自己从根源出发,推理下流程,然后用了些小 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  
       Jun 9, 2023 via iPhone
    @passer9527 (;´༎ຶД༎ຶ`)为什么要这么做,你换个 maven 啊,然后看看 maven trace compile
    xyooyx
        13
    xyooyx  
       Jun 9, 2023 via iPhone
    idea 不是可以加载多环境吗。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   882 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 20:54 · PVG 04:54 · LAX 13:54 · JFK 16:54
    ♥ Do have faith in what you're doing.