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

325 天前
 passer9527

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

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

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

1642 次点击
所在节点    Java
13 条回复
jamezee
325 天前
深入理解 Java 虚拟机(第三版)里有写
passer9527
325 天前
@jamezee 里面用的是 java8 的,不是我要的
jamezee
325 天前
@passer9527 第三版是 openjdk12 ,你说的是第二版吧
passer9527
325 天前
@jamezee 说的就是第三版,我说的是单独运行 javac ,不是 调试整个 jvm
c2const
325 天前
之前接触过一个 java 项目,jdk11 的,JavaCompiler jc = ToolProvider.getSystemJavaCompiler(); ....
可以直接编译 java 源码到 class 文件。
那项目还打包 AOT 编译到二进制了。
DsuineGP
325 天前
看起来 jdk11 的 javac 还依赖了 $JAVA_HOME/lib/jli 这个动态库, 你拷贝的时候把这个库也一起带着, 保持相对的路径就行
----
Load command 18
cmd LC_RPATH
cmdsize 40
path @loader_path/../lib/jli (offset 12)
zhady009
325 天前
啥报错信息都没 猜
sunxiaping521
325 天前
为什么不直接用 JDK 11 ?
siweipancc
325 天前
……你是单独执行 class 文件?
passer9527
325 天前
@siweipancc 单独运行 javac 源码
passer9527
324 天前
自己折腾了一天,搞定了,确实没有搜到资料,靠自己从根源出发,推理下流程,然后用了些小 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
324 天前
@passer9527 (;´༎ຶД༎ຶ`)为什么要这么做,你换个 maven 啊,然后看看 maven trace compile
lqw3030
324 天前
idea 不是可以加载多环境吗。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/947197

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX