首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以将Java11代码编译成Java8字节码并在8上运行吗?

可以将Java11代码编译成Java8字节码并在8上运行吗?
EN

Stack Overflow用户
提问于 2018-11-15 17:57:56
回答 3查看 13.4K关注 0票数 20

我正在使用java 11处理一些依赖关系,并将其编译到旧版本。我将一个依赖项迁移到了Java 11,运行良好,但我们仍然必须在Java8上运行Tomcat 7或8。是否可以使用--release标志编译使用varstream().dropwhile(...)Map.of(...)并在8上运行的代码?

释放标志表明应该有这样的可能性:

-发布针对特定VM版本的公开、支持和文档化API的发行版编译。支持的发布目标是6、7、8和9。

这个项目是一个依赖项,SprinBoot2.1和Java11可以独立工作,但是需要在Java8中运行。

我的maven插件编译器设置:

代码语言:javascript
复制
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <release>8</release>
    </configuration>
</plugin>

但是这禁止编译>jdk8 8特定的代码。我正在使用最新的maven 3.6.0和mvn编译器,如上面所示。

试图编译:

代码语言:javascript
复制
return List.of("dsadas", "dasdadddds", "£dsada", "dasdas")
        .stream()
        .dropWhile(s -> s.contains("das"))
        .collect(Collectors.toList());

抛出错误:

代码语言:javascript
复制
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project api: Compilation failure: Compilation failure: 
[ERROR] /home/agilob/Projects/.....java:[58,13] cannot find symbol
[ERROR]   symbol:   class var
[ERROR]   location: 
[ERROR] /home/agilob/Projects/....java:[43,20] cannot find symbol
[ERROR]   symbol:   method of(java.lang.String,java.lang.String,java.lang.String,java.lang.String)
[ERROR]   location: interface java.util.List
[ERROR] -> [Help 1]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-15 18:47:27

这是不可能的。只允许目标Java平台的API方法和类。

JEP 247:为较早的平台版本编译中定义的

定义了一个新的命令行选项- platform,它自动配置编译器以生成类文件,这些类文件将链接到给定平台版本的实现。

可以使用的相关部分是:

对于N < 9,文档化的API由javac默认的JDK引导路径上的公共API组成。 对于N >= 9,文档化的API包括(i)从JDK映像中的那些模块导出的API,这些模块是JDK文档的一部分;(ii)从jdk.unsupported模块导出的API(见JEP 260)。

票数 12
EN

Stack Overflow用户

发布于 2019-09-01 18:59:41

现在使用https://github.com/bsideup/jabel是可能的

Jabel - javac 12插件,使其发出Java 8字节码。

票数 5
EN

Stack Overflow用户

发布于 2020-02-21 17:02:22

用于思想用途

对我来说很管用

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53325376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档