当前位置: 首页 > 面试题库 >

\--release不允许从系统模块导出软件包

谢诚
2023-03-14
问题内容

我有以下程序:

module-info.java

module a {
}

Main.java

public class Main {
    public static void main(String[] args) {
        System.out.println(sun.nio.ByteBuffered.class);
    }
}

该程序使用以下--add-exports选项成功编译:

> javac --add-exports java.base/sun.nio=a module-info.java Main.java

但是,当我添加--release参数时,它将失败:

> javac --add-exports java.base/sun.nio=a --release 9 module-info.java Main.java
error: exporting a package from system module java.base is not allowed with --release
1 error

基本上,这两个命令是等效的。那么为什么要禁止后者呢?

另外,由于IDEA将--release参数传递给javac,因此,如果我的项目需要内部API,则无法在IDEA中进行开发。

我正在使用JDK 9 + 178。


问题答案:

这似乎从这个bug票是--release不能结合使用--add- exports--add-reads--patch-module

从链接:

这里的总体建议是使make –release 9在JDK 9和(预期的)JDK 10之间保持一致的工作,即使是以类似以下命令的可能不同行为为代价的:
$ <jdk9>/javac Test.java
$ <jdk9>/javac --release 9 Test.java

也:

鉴于–release的意图,这应该可以接受-允许使用给定JDK版本的受支持API编译代码。

该提案尤其是要:

[编辑]

-防止将–add-exports,-add-reads和–patch-module与–release(任何版本)结合用于系统模块

这是包含以下内容的文件差异:

--release不允许从系统模块{0}导出软件包

我无法评论其基本原理,但从上面的引用中可以看出,这与允许JDK 9与JDK 10一致地工作有关。



 类似资料:
  • 我在Ubuntu 18.04和php7.3上使用phpmyadmin,当我尝试导入或导出文件时,会显示以下错误: ./libraries/plugin_interface.lib.php#551 count()中的警告:参数必须是数组或实现可计数的对象,所以我转到这个文件(plugin_interface.lib.php)并尝试将$options强制转换为数组,但仍然不起作用

  • 问题内容: 我有一个要在其中构建的轮播文件,所以我是: 在我使用低于: …但是我收到此错误消息: 有谁知道如何解决这个问题? 问题答案: 您使用的是Babel 6和Babel 7的组合。不能保证各个版本之间的兼容性: 应该 和 将是 我也很困惑,因为您没有在中提及,但是假设它在其中也应该进行更新。

  • 伴随着移动互联的大潮,当今越来越多的网站已经从网页模式进化到了 Webapp 模式。它们运行在现代的高级浏览器里,使用 HTML5、 CSS3、 ES6 等更新的技术来开发丰富的功能,网页已经不仅仅是完成浏览的基本需求,并且webapp通常是一个单页面应用,每一个视图通过异步的方式加载,这导致页面初始化和使用过程中会加载越来越多的 JavaScript 代码,这给前端开发的流程和资源组织带来了巨大

  • 模块系统 Rust有两个与模块 (module) 系统相关的独特术语:crate和module, 其中包装箱 (crate) 与其它语言中的 libary 或者 package 作用一样。 每个包装箱都有一个隐藏的根模块,在根模块下可以定义一个子模块树, 其路径采用::作为分隔符。包装箱由条目 (item) 构成,多个条目通过模块组织在一起。 定义模块 使用mod关键字定义我们的模块: // in

  • 我一直在尝试上传一个模块,它在1.6版本上运行得非常好,但是当我尝试上传到1.7版本时,我得到了下一个错误-检查屏幕截图。 我到处都在寻找错误,但找不到解决方法,请帮忙。

  • 问题内容: 模块jta和java.sql将包javax.transaction.xa导出到模块dom4j 正如你所看到的,这两个模块和输出相同的包,。但是,其中的包具有我要求的类,这些类在中不存在。我根本不需要模块,但是我需要。 是否可以防止出口? 问题答案: 该JTA GitHub的读取确认什么@Alan中已经指出了以下评论 - 该Java™Java事务API(JTA)的独立发行版使用Java平