Java 版本兼容疑问

2017-03-20 18:30:57 +08:00
 qiyuey
像 fastjson 这种含有 Java 8 ,如: LocaDate 的代码,是怎样编译出 minor.major 49 的 class 文件的?
直接使用-target 好像不可以吧?
3337 次点击
所在节点    Java
7 条回复
unionx
2017-03-20 19:46:09 +08:00
maven 的 pom.xml 里面设置 maven-compiler-plugin 的 source 和 target 参数
snnn
2017-03-20 19:59:30 +08:00
这样在低版本的 JRE 上能跑?
slixurd
2017-03-20 20:31:04 +08:00
1.1.x 都是用 JDK 1.6 来编译的...
现在已经改成了 1.8.0_25
如果不是因为之前的漏洞问题,本来不想升级的
用高版本编译低版本的包很容易就挂了...
例如非常经典的 ConcurrentHashMap 问题.....
SoloCompany
2017-03-21 00:26:36 +08:00
你看错了吧

<properties>
<junit.version>4.11</junit.version>
<gpg.skip>true</gpg.skip>
<javadoc.skip>false</javadoc.skip>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jdk.version>1.5</jdk.version>
</properties>

项目仅仅是用了 jdk 8 的 api 并没有使用 java 8 语法
当然可以 target 到 1.5 了
然后你在代码内部完全可以自己判断 java 版本去加载不同的支持部分
qiyuey
2017-03-21 10:33:27 +08:00
@SoloCompany 像 LocalDate 这种是可以的,但是像 lambda 表达式这种是不行的,是这个意思吗?
SoloCompany
2017-03-21 11:10:22 +08:00
@qiyuey #5 你要区分一下什么是 API 什么是语言特性, API 实质就是类库而已,比如 joda time 本来就是一个库,内置到 jdk 8 之后只不过换了个名称空间
qiyuey
2017-03-21 14:02:59 +08:00
@SoloCompany 明白了 感谢感谢

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

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

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

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

© 2021 V2EX