File.getAbsoluteFile() return "/" in unix shell 执行
File.getAbsoluteFile() return "/" in unix shell execution
我正在使用 File.getAbsoluteFile() 来构建资源文件夹的相对路径。
当我在 IDE 中执行代码时 - 效果很好。
我已经编译了一个 jar 文件,并在终端中通过脚本执行它 - 效果很好。
在这两种情况下,我都获得了正确的相对路径:
"/Users/ie54553/Desktop/MyProject/"
我尝试使用 OSX launchd
执行相同的脚本
plist 看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.nathangrigg.archive-tweets</string>
<key>ProgramArguments</key>
<array>
<string>/Users/ie54553/Desktop/MyProject/script.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/out.out</string>
<key>StandardErrorPath</key>
<string>/tmp/err.out</string>
</dict>
</plist>
脚本正在执行,但我得到的相对路径是:“/”而不是“/Users/ie54553/Desktop/MyProject/”,因为它应该是...
知道为什么会这样吗?
最后我用了下一种方式
new File(ClassName.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
我得到了执行 jar 的路径,然后对字符串进行了一些操作,然后它起作用了...
没有最 "elegant" 的方法,但有效:)
我正在使用 File.getAbsoluteFile() 来构建资源文件夹的相对路径。 当我在 IDE 中执行代码时 - 效果很好。 我已经编译了一个 jar 文件,并在终端中通过脚本执行它 - 效果很好。
在这两种情况下,我都获得了正确的相对路径: "/Users/ie54553/Desktop/MyProject/"
我尝试使用 OSX launchd
执行相同的脚本
plist 看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.nathangrigg.archive-tweets</string>
<key>ProgramArguments</key>
<array>
<string>/Users/ie54553/Desktop/MyProject/script.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/out.out</string>
<key>StandardErrorPath</key>
<string>/tmp/err.out</string>
</dict>
</plist>
脚本正在执行,但我得到的相对路径是:“/”而不是“/Users/ie54553/Desktop/MyProject/”,因为它应该是...
知道为什么会这样吗?
最后我用了下一种方式
new File(ClassName.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
我得到了执行 jar 的路径,然后对字符串进行了一些操作,然后它起作用了...
没有最 "elegant" 的方法,但有效:)