问题标签 [java-14]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
349 浏览

java - 设置 -illegal-access=deny 时授予不受信任的代码“suppressAccessChecks”是否安全?

如果没有非法访问 ( --illegal-access=deny) 和拒绝访问jdk.unsupported(使用accessClassInPackage检查完成),看起来ReflectPermission "suppressAccessChecks"不会再导致完整的沙箱逃逸。

真的吗?当将此权限授予不受信任的代码时,还有其他方法可以损害 JVM 的安全性吗?

这是设置:

  • java.policy 文件授予所有代码ReflectPermission "suppressAccessChecks"
  • 使用默认的 java 安全管理器。这是通过添加-Djava.security.manager到 VM 选项来完成的。
  • 通过添加--illegal-access=deny到 VM 选项来禁止非法访问。

要清楚:

  • 安装了 SecurityManger。(为什么我什至必须说明这一点?)
  • 要加载您需要的本机库RuntimePermission("loadLibrary.*")- 这是不被授予的
  • 要访问sun.misc.Unsafe,您需要访问RuntimePermission("accessClassInPackage.sun.misc")未授予的 -
  • ClassLoader.defineClass要通过反射和访问例如setAccessible(true)java.base必须打开java.lang您的模块 - 它没有。

所以要么:

  • ReflectPermission "suppressAccessChecks"如果被授予,还有其他方法可以绕过/逃避 java 沙箱吗?
  • 或者模块边界是否被视为安全边界,这样的沙箱绕过将被视为安全漏洞?

简而言之:

如果我有以下策略文件my.policy

和一个正常的Main.java

并运行它java --illegal-access=deny -Djava.security.manager -Djava.security.policy=my.policy Main,沙箱可以逃脱吗?

0 投票
1 回答
957 浏览

java - Eclipse IDE 支持 Java 14 早期访问版本

我找不到任何资源列出任何支持 JDK 14 EA 构建的插件。是否有更新版本的 Eclipse Java IDE 支持 JDK 14,或者至少有一个插件可以从市场上支持它?

0 投票
1 回答
2391 浏览

java - 配置 IntelliJ 以使用 Java 14 和记录

我试图让 IntelliJ 与 SDK-14 一起工作,但我显然在让记录工作时遇到问题。由于发布日期是 3 月,我认为 Jetbrains 的好人已经接近拥有与 SDK-14 兼容的版本。我需要使用 --enable-preview 运行 SDK 14。我已经用谷歌搜索了几天没有任何运气。

我对 Sublime 有一些运气,但我错过了代码完成。如果还有其他选择,请随时提及。

0 投票
1 回答
136 浏览

java - 如何为提议的 Java 语言特性提供反馈?

Java 语言的演变已经进入了一个新的阶段。Java 每 6 个月发布一次,具有“预览”功能,让每个人都可以测试,并且据说可以就新的语言想法提供反馈。

但是,我找不到如何实际提供反馈!以 JEP 305 为例,“Pattern matching for instanceof”作为 Java 14 中的预览功能引入。JIRA 页面没有评论。我想我可以向开发者邮件列表发送电子邮件,但这似乎过于严厉。

我如何通过主动提交 2 美分来为 Java 的开发做出贡献?

0 投票
2 回答
2272 浏览

java - Java jpackage原生打包,未找到WiX工具报错

我正在使用JDK14早期访问版本附带的 beta jpackage 工具(JEP 343)。

我在 Windows 中运行了以下 .bat 脚本

我在运行脚本时收到以下错误。

警告:使用孵化器模块:jdk.incubator.jpackage

找不到 WiX 工具(light.exe、candle.exe) 从https://wixtoolset.org下载 WiX 3.0 或更高版本并将其添加到 PATH。错误:无效或不受支持的类型:[null]

我已经下载了 WiX311.exe 并尝试将其放在与 jpackage.exe 相同的文件夹中以及与 MAIN_JAR.jar 相同的文件夹中,但都没有解决这个问题。

所以我的问题是我需要将它添加到什么“PATH”才能将其打包?

0 投票
1 回答
5408 浏览

java - 在箭头 (->) 的帮助下切换表达式,现在可以产生/返回值

Java 14 中扩展的 switch 表达式,除了程序员/审阅者的视觉清晰度之外,对 switch 表达式的需求还不清楚。是吗

  1. 与旧的 switch 表达式不同的字节码实现?
  2. 在执行方面比以前的版本有任何性能改进吗?

参考:https ://www.techgeeknext.com/java/java14-features

JDK 14 版本:

JDK 14 字节代码

JDK - 10 代码

JDK - 10 字节代码

除了块内的局部分配减少了 JIT 指令外,原语没有重大区别。

0 投票
1 回答
479 浏览

java - 如何将 java 图像与 jpackage 捆绑并修改为 .app 文件?

我刚刚创建了一个 java 应用程序并使用 moditect-jlink 创建了一个图像,包括 JRE。但现在我想知道如何将它捆绑到 OSX 的 .app 文件中。有人试过吗?jpackage 似乎在不断变化,教程很快就过时了。

0 投票
3 回答
5087 浏览

java - 发布 Java-14 getter/setter 命名约定

Java 14 引入了记录功能。Record 创建与字段同名的 getter,因此可以编写print(person.name())例如。但是旧的 Java bean 约定规定应该将此方法命名为getName().

在同一个代码库中使用这两种样式看起来不太好。将所有内容迁移到记录是不可能的,因为它们太有限而无法替换所有用例。

是否有任何官方或半官方指南如何在新代码中在 Java 14 之后命名 getter 和 setter?

0 投票
1 回答
1309 浏览

java - 没有找到带有 Java 记录和 BeanPropertyRowMapper 的默认构造函数

我正在使用新的 Java 14 和 Spring Boot。我使用了新的很酷的记录,而不是用于数据持有者的常规 Java 类。

稍后在我的服务类中,我使用 SpringBeanPropertyRowMapper来获取数据。

我最终得到以下错误:

如何为记录添加默认构造函数,或者有没有其他方法可以解决这个问题?

0 投票
2 回答
2737 浏览

java - java.lang.UnsupportedOperationException:此功能需要 ASM8_EXPERIMENTAL

我尝试使用 spring boot + jdk14(records) + junit5 + maven 运行应用程序,但不幸的是,我无法解决 asm 的问题。在互联网上,我只能找到这个asm GitLab 提交。Afaik 这是一个实验性功能,没有官方版本。那么,在 jdk14 上运行项目的方式是什么?

在下面的堆栈跟踪中找到: