如何从项目级别指定 --add-opens 并确保无论以何种方式运行我的应用程序都将其考虑在内?

2023-12-30

我最近迁移到 Java 17,随之而来的一些限制要求我使用--add-opens因为运行我的应用程序时存在一个依赖项。

当我需要添加这个java -jar命令已运行。现在我找到了这些解决方案:

  • 我可以将其添加到运行该项目的 Dockerfile 中的命令行参数中
java --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED -jar my.jar
  • 我可以通过我的 Maven 将它添加到我的 MANIFEST.MF 中pom.xml
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifestEntries>
                <Add-Opens>java.base/sun.util.calendar java.base/java.util</Add-Opens>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>

显然,两者都适合生产。然而,当通过 IntelliJ 运行我的应用程序时,它没有选择我认为是正常的选项。我必须将它们设置在我的运行配置中(顺便说一下,它也提交给我的项目)作为虚拟机参数。

我正在寻找一种方法来自动确保一致性,而不必在我声明附加打开的两个地方并行维护。

编辑:我想知道 argfiles 是否可行。就像我的项目中有一个 argfile 一样,它将在 jar 中引用,并且可以在 y 运行配置中引用。我还没有找到太多证据,但这就是我目前正在追求的道路。

编辑2:我添加了一个addopens文件位于我的项目的根目录中,现在可以从我需要它的各个点引用它。对于测试,我添加了这个,并且它与 IntelliJ 测试和 Maven 测试一起开箱即用:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <!-- This adds the options contained in the addopens file to the test JVM arguments -->
        <argLine>@addopens @{argLine}</argLine>
    </configuration>
</plugin>

我也可以运送addopens我的 docker 中的文件以在生产中使用。我仍然需要在 IntelliJ 中添加到我的运行配置中@addopens手动。


请按照步骤:编辑运行/调试配置 -> 在虚拟机选项中添加以下选项:

--add-opens java.base/java.lang=ALL-UNNAMED
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从项目级别指定 --add-opens 并确保无论以何种方式运行我的应用程序都将其考虑在内? 的相关文章

随机推荐

  • 反射 java.lang.ClassNotFoundException

    我正在使用以下内容 protected void onActivityResult int requestCode int resultCode Intent data super onActivityResult requestCode
  • 使用 numpy 进行多元多项式回归

    我有很多样品 y i a i b i c i where y假定作为多项式变化a b c达到一定程度 例如 对于给定的一组数据和 2 度 我可能会生成模型 y a 2 2ab 3cb c 2 5ac 这可以使用最小二乘法来完成 并且是 nu
  • Java 中忽略 SSL 验证

    我必须使用无效的 SSL 证书调用 Web 服务器上托管的 HTTP 服务 在开发中 我正在导入证书keytool但每个客户端安装的证书都会不同 所以我不能只是捆绑它 前言 我DO要知道跳过 SSL 验证确实很难看 在这种特定情况下 我什至
  • 在 h2 数据库上创建视图

    我正在尝试在 H2SQL 上创建视图 但找不到正确的语法 我在用着 CREATE VIEW dbo Log AS SELECT FROM dbo MyTable 我收到错误 Caused by org h2 jdbc JdbcSQLExce
  • 将 var 初始化为 null

    我已经看到如何初始化var 为空 https stackoverflow com questions 2904689 how to initialize var这对我的情况没有帮助 我有 string nuller null var fir
  • 如何解决python pdfkit中的“wkhtmltopdf报告错误:由于网络错误而退出并显示代码1:ProtocolUnknownError”

    我正在使用姜戈 这是views py 中的代码 def download as pdf view request doc type pk import pdfkit file name invoice pdf pdf path os pat
  • Terraform timestamp() 为仅数字字符串

    The timestamp https www terraform io docs configuration interpolation html timestamp插值语法中的函数将返回 ISO 8601 格式的字符串 如下所示2019
  • py2exe com dll问题

    我正在尝试用 python 制作一个 com dll 但我尝试注册到编译的 dll 时出现错误消息 运行时错误 r6034 和 无法加载 python dll 这个问题的解决方案是什么 mycode 设置 py This is the di
  • 检测受密码保护的word文件

    我正在使用 netoffice 库从 Word 文件中提取文本 这应该是自动化过程 但是 当Word文件受密码保护时 会显示警报窗口 因此用户需要输入密码 由于这是自动化过程 用户无需输入密码 程序将在此停止 如何检测单词文件是否受 net
  • orderBy后Angularjs错误$index

    我是 Angular js 的新手 在对数组进行排序和处理排序后的数据时遇到一些问题 我有一个包含项目的列表 并希望按 Store storeName 对其进行排序 该列表到目前为止正在运行 但在对数据进行排序后 我的删除功能不再起作用 我
  • Haskell中的IO类型是什么

    我是 Haskell 编程语言的新手 我一直在绊倒IOtype 作为函数参数或返回类型 playGame Screen gt IO OR gameRunner IO String gt String gt IO gt Screen gt I
  • jQuery UI 2 日期选择器和范围选择

    我正在尝试连接 2 个日期选择器以允许用户选择日期范围 我创建了这样的代码 function var dates fromDate toDate datepicker dateFormat yy mm dd changeMonth true
  • 使用向量和对的邻接列表图表示

    我想实现竞争性编程 1 书中的邻接列表图表示 该实现使用 V 顶点的向量 并且对于每个顶点 v 另一个 包含有连接的对 相邻顶点及其边权重 的向量 v 我在获取该图的输入并显示输出时遇到问题 在书中 他们做了这样的声明 include
  • Eclipse 格式化程序在空注释行中添加空格

    Eclipse 代码格式化程序在每个空 Javadoc 注释行中添加一个尾随空格 请参见屏幕截图 同事的格式化程序总是删除这些空格 从而产生恼人的 SVN 差异 他声称使用相同的格式化程序设置 XML 文件 尽管如此 我尝试了格式化程序设置
  • 是否可以检测文本何时换行?

    是否可以检测文本换行的位置 Lorem ipsum dolor 坐 amet 假设上面的文本在 dolor 一词之后换行 如何检测到它并在那里插入一些标记 这样它就可以了Lorem ipsum dolor div class wrap ma
  • 如何在 swift 2.2 中休眠几毫秒?

    请有人告诉我如何在 swift 2 2 中使用 sleep 几毫秒 while true print sleep for 0 002 seconds sleep 0 002 not working but while true print
  • R 地图()中的县 FIPS 准确吗?

    当我运行以下代码时 require maps colors lt data frame county county fips polyname color rep FFFFFF nrow county fips stringsAsFacto
  • UWP Navigation通过 MVVM 进行视图导航

    我在我的应用程序中使用 NavigationView 作为主控件 并在页面加载时使用框架
  • 如何暂停和恢复jquery间隔

    我用 jQuery 制作了一个自定义滑块 为此 我使用了 setInterval 函数 timer setInterval function 8000 但我无法暂停和恢复间隔 我有 2 个按钮 播放 暂停 我想使用 假设我在 3 秒后单击
  • 如何从项目级别指定 --add-opens 并确保无论以何种方式运行我的应用程序都将其考虑在内?

    我最近迁移到 Java 17 随之而来的一些限制要求我使用 add opens因为运行我的应用程序时存在一个依赖项 当我需要添加这个java jar命令已运行 现在我找到了这些解决方案 我可以将其添加到运行该项目的 Dockerfile 中