gpt4 book ai didi

java - cygwin下如何让java识别符号链接(symbolic link)

转载 作者:行者123 更新时间:2023-11-29 04:01:57 24 4
gpt4 key购买 nike

这是一个非常简单的 java 程序,用于打印文件的第一行:

import java.io.*
public class test {
public static void main(String[] args) throws IOException {
System.out.print(new BufferedReader(new FileReader(args[0])).readLine());
}
}

当我在 cygwin 下运行这个程序并将符号链接(symbolic link)的名称传递给它时,它会打印符号链接(symbolic link)的内容,而不是该链接的目标:

$ echo foo > testfile
$ ln -s testfile symlink_to_testfile
$ java test testfile
foo
$ java test symlink_to_testfile
!<symlink> ?t e s t f i l e

我如何说服 java 遵循符号链接(symbolic link)?我希望有比自己实现重定向更简单的方法。

最佳答案

我也有这个问题,所以我写了一个 shell 包装器,其中包含类似的东西

# java runs as native windows program, so convert pathnames
WINDOWS_ARGS=""
for ARG in $*
do
if [ -e $ARG ]
# pathname argument is only converted if the file exists,
# so this trick may not be appropriate everywhere...
then
WINDOWS_ARGS="$WINDOWS_ARGS `cygpath -w $ARG`"
else
WINDOWS_ARGS="$WINDOWS_ARGS $ARG"
fi
done
java -jar `cygpath -w myprogram.jar` $WINDOWS_ARGS

因为无论如何我都在从 cygwin shell 中调用东西。如果您需要从 window$ 环境启动脚本,请参阅 http://cygwin.com/ml/cygwin/2004-07/msg00163.html

cygpath 是转换路径字符串的建议方法...我到达此页面是因为我想打开一个 File 对象,该对象的硬编码路径可能是Cygwin 符号链接(symbolic link)。仍然不确定那个……运行子进程似乎很极端,需要 cygpath 位于您的 Windows 路径上,或者 cygwin 目录位于每台计算机上的相同位置。

关于java - cygwin下如何让java识别符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2917708/

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