gpt4 book ai didi

java - CYGWIN:所有路径均为 cygwin/format,java 无法理解

转载 作者:行者123 更新时间:2023-12-02 03:51:29 28 4
gpt4 key购买 nike

我已经安装了 cygwin 并想用它来运行 java 应用程序。

当我运行时java -cp {pathToMyJar} mainClass在 Windows 控制台中它按预期工作。

当我在 cygwin 中运行相同的命令时 - 它也有效。

当我运行打算在 cygwin 中运行的内容时java -cp {/cygdrive/pathToMyJar} mainClass - 它失败了,它找不到一个类。

为什么我想以 cygwin 方式运行它?因为许多应用程序都有计算类路径的 sh 脚本。如果您通过 cygwin 运行这些脚本,则会导致类路径具有/cygdrive/前缀。然后你启动java应用程序,它失败了,因为java不理解cygwin的类路径前缀。

我读到我可以强制 cygwin 删除该前缀:https://unix.stackexchange.com/questions/44677/how-do-i-get-rid-of-cygwins-cygdrive-prefix-in-all-paths

好的,但有一个问题是:

如果应用程序无法理解 cygwin 的默认路径 - 它打算如何工作?使用 cygwin 的正确方法是什么?我很确定这个问题应该有一些“cygwin 友好”的解决方案。

最佳答案

据我了解,为了让 Java 理解 Cygwin 路径,它必须在 Cygwin 环境中编译。

如果您使用 sh 脚本来输出供 Windows Java 使用的路径,则可以使用 cygpath将路径转换为 ​​Windows 形式的实用程序,例如

$ cygpath -w ~
C:\cygwin64\home\anthony
<小时/>

事实上,Cygwin 文档将 java 列为 cygpath 实用程序的一个很好的用例。来自 Using Cygwin effectively with Windows :

A few programs require a Windows-style, semicolon-delimited path list, which cygpath can translate from a POSIX path with the -p option. For example, a Java compilation from bash might look like this:

javac -cp "$(cygpath -pw "$CLASSPATH")" hello.java

Since using quoting and subshells is somewhat awkward, it is often preferable to use cygpath in shell scripts.

关于java - CYGWIN:所有路径均为 cygwin/format,java 无法理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35840756/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com