【问题标题】:How to run Java application using Cygwin如何使用 Cygwin 运行 Java 应用程序
【发布时间】:2019-12-15 10:24:55
【问题描述】:

我一直在尝试在 Windows 10 上使用 Cygwin 为 javafx https://openjfx.io/openjfx-docs/#maven 编译和运行这个示例。因为我的 javafx 存储在 C:\Program Files\javafx-sdk-13.0 中,所以需要一段时间才能通过编译.1,麻烦在于文件夹名称中的空格。在尝试了很多不同的事情后,我终于找到了How to cd into a directory with space in the name?,简而言之,它告诉您在环境变量“PATH_TO_FX”周围加上引号。

然后我尝试运行示例

$ java --module-path "PATH_TO_FX":mods -m hellofx/hellofx.HelloFX

启动层初始化时出错​java.nio.file.InvalidPathException: Illegal char <:> at index 10: PATH_TO_FX:mods​

所以我认为 PATH_TO_FX 是问题,但事实证明不是。

$ java --module-path src:mods -m hellofx/hellofx.HelloFX

启动层初始化时出错​java.nio.file.InvalidPathException: Illegal char <:> at index 3: src:mods​

src 是一个有效的目录,我仍然遇到同样的问题。我认为这与将 java 存储在包含空格的目录中有关,但我不确定。

【问题讨论】:

  • 模块路径的分隔符应该是;,而不是:
  • 不是;对于 Windows? Cygwin 使用 bash
  • 用双引号括起来。

标签: java cygwin


【解决方案1】:

@Ray_Write

不是;对于 Windows? Cygwin 使用 bash

这与外壳无关。 --module-path的解析完全由java解释器处理,而according to the docs在Windows上使用;而不是:,大概是为了与WindowsPATH分隔符一致。

由于此 Java 安装是本机 Windows 应用程序,而不是为 Cygwin 构建的应用程序,因此仍应使用 ;。所以实际上,这与 Cygwin 无关。

为了将文件路径传递给 java,您可能还需要使用 cygpath 将路径转换为其本机 Windows 路径。

【讨论】:

    【解决方案2】:

    你说得对@Iguananaut,我确实需要一个分号,为了让我的例子起作用,我不得不逃避它。

    java --module-path "$PATH_TO_FX"\;mods -m hellofx/hellofx.HelloFX

    PATH_TO_FX 在 .bash_profile 中的位置

    PATH_TO_FX="C:/Program Files/javafx-sdk-13.0.1/lib"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-04
      • 2013-11-08
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多