小编Dun*_*ncG的帖子

如何确定 Java 正在 Windows 上运行

我希望确定 Java 是否在 Windows 上运行,并且看到了许多不同的建议,其中包括 System 属性os.namestartsWith/ indexOf/ contains/ toLowerCase(Locale.ENGLISH)/toLowerCase()或仅 的各种排列File.separatorChar

我扫描了 JDK 源代码,看看是否有明确的答案(见下文)以及其他一些 SO 帖子表明:

String os = System.getProperty("os.name" /**, "<Surely os.name is never null?>" */);
List<Boolean> isWindows = List.of(
    os.startsWith("Windows"),
    os.contains("Windows"),
    os.toLowerCase().startsWith("windows"),
    os.toLowerCase().contains("windows"),
    os.toLowerCase(Locale.ENGLISH).contains("windows"),
    os.toLowerCase(Locale.ENGLISH).startsWith("windows"),
    File.separatorChar == '\\'
);
System.out.println("os.name       ="+os);
System.out.println("os.name(UTF-8)="+Arrays.toString(os.getBytes(StandardCharsets.UTF_8)));
System.out.println("isWindows     ="+isWindows);
Run Code Online (Sandbox Code Playgroud)

是否有任何操作系统/语言安装的排列会isWindows使用上述条件错误地识别,其中真/假不一致或错误?

// For Windows I would expect all true, such as:
os.name       =Windows 10
os.name(UTF-8)=[87, 105, 110, 100, 111, 119, 115, …
Run Code Online (Sandbox Code Playgroud)

java operating-system

7
推荐指数
1
解决办法
2121
查看次数

在适用于 Linux 的 Windows 子系统上运行 JavaFX 15 应用程序时出现内部错误

当我尝试在适用于 Linux WSL2 / Ubuntu 20.04 的 Windows 子系统上运行 JavaFX 15 应用程序时,我遇到了困难,需要有关后续尝试步骤的建议。

到目前为止,我已经能够在 WSL 内运行我通常在 Windows/JDK15 上执行的所有 Java 构建,包括那些具有 Swing/AWT 依赖项的构建。AWT / Swing 测试应用程序在 WSL 中成功运行并引用 JDK15,并在 Windows 10 上运行 X Windows。但是我无法运行任何 JavaFX 应用程序,甚至是HelloFX示例:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloFX extends Application {
    public void start(Stage stage) {
        String javaVersion = System.getProperty("java.version");
        String javafxVersion = System.getProperty("javafx.version");
        Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " …
Run Code Online (Sandbox Code Playgroud)

java javafx wsl-2

6
推荐指数
1
解决办法
1574
查看次数

标签 统计

java ×2

javafx ×1

operating-system ×1

wsl-2 ×1