问题标签 [java-9]

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 投票
2 回答
3034 浏览

java - Java Swing 中的 HiDPI 支持以实现多种外观

我希望为一些 Swing 应用程序添加 Hi-DPI 支持,但我未能找到足以满足我需求的解决方案。我需要支持多种外观和感觉,所以情况似乎比我发现的其他帖子要复杂得多(这些帖子倾向于建议“调整你的 UI 大小以匹配你的字体大小”)。

一些实验发现其中UIManager包含许多可以调整的指标,让您在使应用程序 Hi-DPI 友好方面有一个良好的开端。(UIManager-Defaults实用程序对于探索这些非常宝贵!)但我发现 L&F 的工作方式似乎完全不同:

  • Windows L&F 为您提供了一个很好的(不完美的)默认字体大小,并且内置图标(如复选框和窗口图标)的大小适当 - 但许多其他指标仍然不合时宜。

  • 在 Metal 中,您可以UIManager单独更新字体。通过一些工作,您可以扩展内置的IconUIResources 以匹配。

  • 在 Nimbus 中,您可以只更新一个默认字体,其他字体就位......但我无法缩放内置图标并成功呈现组合框、单选按钮(等)!

我从玩弄中得到的感觉是,应该可以为每个 L&F 特定的特定调整创建一个列表。这可能包括调整FontIcon和sInteger的默认值。Dimension

有没有人想出一个好的解决方案?

谁能分享一份UIDefaults需要对标准 L&F 进行调整的最终清单?

我会对一个始终支持 Metal 和 Windows 的解决方案感到满意。

我想这样的解决方案应该是可重复使用的,并且可以解决一系列 Swing 应用程序的相同问题。我很惊讶似乎还没有这样的实用程序存在。(如果不是,请赐教!)这种方法当然不能解决所有问题(例如,您仍然需要手动扩展对setPreferredSize等的任何调用。然后,已经支持多个 L&F 的应用程序应该避免调用它。)尽管如此,我认为它可以让许多应用程序有一个良好的开端。

我知道JDK-9承诺提供完整的 Hi-DPI 支持,但我不能等那么久——即使在 2017 年发布之后,我也可能无法切换一段时间。

0 投票
1 回答
899 浏览

java - 是否有可能在 Java 9 中获得 JavaFX 窗口的 HWND?

Java 9 将限制对私有 API 的任何访问。这意味着使用反射检索窗口 hwnd 的已知方法将不再起作用。

还有办法得到它们吗?我问是因为我有一个库,它提供了一个用于操作任务栏的 API(以类似于Java9提供的方式)。Java 9 API 仍然适用于 AWT,所以我希望我可以为 Java 9 和 JavaFX 设置我的项目。

我以前只调用私有方法,但这将停止工作。任何解决方案表示赞赏。如果可以使用 JNA 或 BridJ 完成本机调用,则可以。

0 投票
1 回答
1848 浏览

java - Java 9 的新字符串实现是什么?

Java 9 底层是如何实现字符串的?每个字符是存储为一个字节还是两个字节?

0 投票
1 回答
4305 浏览

java - 使用 Java 9 将自定义 JMOD 添加到模块路径

我用这样的 jmod 工具创建了一个简单的JMOD文件

接下来,我尝试通过运行在该模块中执行一个类:

这导致了以下异常:

如果我只是将我的classes目录(我用来创建 JMOD 文件的目录)设置为模块路径,那么一切都会按预期工作。

模块路径上通常不可能有JMOD文件吗?如果是这样的话,有什么理由吗?

0 投票
1 回答
8369 浏览

java - 是否可以在 Java 9 模块中使用没有 module-info.class 的依赖项

我创建了两个小项目de.app1de.app2,其中Appde.app1使用de.app2Test

第一个项目中的module-info.java只包含module de.app1 {}

我编译了第二个项目并创建了一个 jar 文件:

然后尝试像这样编译第一个项目:

由于Test找不到而失败。当我在没有module-info.java的情况下编译项目时,一切都照常工作。

是否可以在 Java 9 模块使用不是 Java 9 模块的 jar 中的类?特别是对于依赖于 3rd-party 项目的项目(例如 apache-commons,...),我认为需要这样的东西。

0 投票
1 回答
257 浏览

java - 在非交互式应用程序中处理 150GB 堆

您好,我有一个使用内存数据网格的 150GB 堆内存程序的案例。我有一些来自运营部门的疯狂要求,要使用一台机器。现在我们都知道如果并行垃圾收集器使用超过 150GB 会发生什么,如果调用 FULL GC 可能会进行数十分钟的垃圾收集。

我希望随着 Java 9 的到来,Shenandoah 低暂停 GC。不幸的是,据我所见,它没有在 Java 9 中列出交付。有人知道吗?

尽管如此,我想知道 G1 GC 将如何处理这么多的堆内存。

最后一个问题。由于我有应该在 2 小时内完成的非交互式批处理应用程序,可以说。这里的主要目标是确保 Full GC 永远不会启动。如果我确保有足够的内存,可以说可以达到的最大堆是否为 150,并且我为其分配了 250GB,我可以满怀信心地说 Full GC GC 永远不会介入或 ? 通常如果新生代+老年代触及最大堆,就会触发full GC。它可以以不同的方式触发吗?

提出了一个重复的请求,我将在这里尝试解释为什么这个问题不是重复的。首先,我们谈论的是 150GB 堆,它为问题增加了完全不同的维度。其次,我没有像提到的问题那样使用 RMI,第三,我在两行之间询问有关 G1 垃圾收集器的问题。此外,一旦我们超出 32GB 堆障碍,我们将进入 64 位地址空间,您无法说服我关于 <32GB 堆的问题与堆 >32GB 的问题相同 更不用说自从 Java 7 例如 PermSpace 不存在以来事情已经发生了一些变化。

0 投票
1 回答
804 浏览

java - Java 9 HttpClient 与 sendAsyncMulti / multiResponseAsync

我正在尝试使用 Java 9 的HttpClient.

HttpRequest 的 javadoc中的基本示例可以正常工作:

但是,在尝试使用时sendAsyncMulti,它不起作用。中没有创建文件E:\foo,没有达到println后面join,也不例外,虽然我基本上是从HttpResponse.multiFile的 Javadoc中复制了示例。我预计一些 HTTP 响应将保存在该目录中。我还尝试删除 HTTP2 和 followRedirects、其他 URL,如 google 等,但它没有改变任何东西。我究竟做错了什么?

如果相关,这是我正在使用的版本(JDK 9 的最新版本):

0 投票
1 回答
680 浏览

jaxb - JAXB XJC 选项:com.sun.tools.xjc.Options 的替代品,它对 Java9 和 OSGi 友好

在我们的框架中,我们在公共 API 中有一个与此方法的接口:

在实现中,我们做这样的事情:

然而,OSGi 和 Java 9 的拼图都不喜欢我们使用com.sun.tools.xjc.Options的 .

我们怎样才能摆脱它?

0 投票
2 回答
190 浏览

java - 为什么 StructuredArray 必须是不可构造的?

这个34:00 的演讲描述了StructuredArrayJava 的 s 设计。一切都很清楚,除了事情:

它不应该是可构造的,即实例可能只能通过一些静态工厂方法(如newInstance )获得。同时,它们应该是可子类化的,这意味着必须有一个公共的构造函数,并且在运行时保证不可构造性。这听起来很hacky,所以我想知道为什么?

我知道工厂的一般优势,特别是静态工厂方法的优势。但是我们在这里得到了什么,所以它使黑客可以接受?

0 投票
0 回答
508 浏览

java - 使用 OJDK Java 版本 9 安装 SBT

当我尝试运行时sbt update,我在日志文件中得到以下信息。

以及以下错误消息:

Java版本:

斯卡拉版本

我该如何解决这个问题。我在网上看不到任何解决方法。