jdk8(包含)之前的,把 javac 代码拷出来 放到 idea 中,打开就能跑起来了,
但是 jdk9 (包含)之后,由于模块化,就跑不起来了,各种错误。
网上的所有资料都是 java8 之前的,包含 2023 新写的文章,都是 java8, 感觉就是相互抄过去抄过来,完全找不到有价值的信息。英文资料虽然没有垃圾信息,但是也没有任何相关的新。
jdk8(包含)之前的,把 javac 代码拷出来 放到 idea 中,打开就能跑起来了,
但是 jdk9 (包含)之后,由于模块化,就跑不起来了,各种错误。
网上的所有资料都是 java8 之前的,包含 2023 新写的文章,都是 java8, 感觉就是相互抄过去抄过来,完全找不到有价值的信息。英文资料虽然没有垃圾信息,但是也没有任何相关的新。
1
jamezee Jun 9, 2023
深入理解 Java 虚拟机(第三版)里有写
|
2
passer9527 OP @jamezee 里面用的是 java8 的,不是我要的
|
3
jamezee Jun 9, 2023
@passer9527 第三版是 openjdk12 ,你说的是第二版吧
|
4
passer9527 OP @jamezee 说的就是第三版,我说的是单独运行 javac ,不是 调试整个 jvm
|
5
c2const Jun 9, 2023
之前接触过一个 java 项目,jdk11 的,JavaCompiler jc = ToolProvider.getSystemJavaCompiler(); ....
可以直接编译 java 源码到 class 文件。 那项目还打包 AOT 编译到二进制了。 |
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) |
7
zhady009 Jun 9, 2023 via iPhone
啥报错信息都没 猜
|
8
sunxiaping521 Jun 9, 2023
为什么不直接用 JDK 11 ?
|
9
siweipancc Jun 9, 2023 via iPhone
……你是单独执行 class 文件?
|
10
passer9527 OP @siweipancc 单独运行 javac 源码
|
11
passer9527 OP 自己折腾了一天,搞定了,确实没有搜到资料,靠自己从根源出发,推理下流程,然后用了些小 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 ------------------------------------------------------------------------------- |
12
siweipancc Jun 9, 2023 via iPhone
@passer9527 (;´༎ຶД༎ຶ`)为什么要这么做,你换个 maven 啊,然后看看 maven trace compile
|
13
xyooyx Jun 9, 2023 via iPhone
idea 不是可以加载多环境吗。。
|