当前位置: 首页 > 知识库问答 >
问题:

文件在unix shell执行中,getAbsoluteFile()返回“/”

雷国兴
2023-03-14

我正在使用文件。getAbsoluteFile()以构建到资源文件夹的相对路径。当我在IDE中执行代码时-效果很好。我编译了一个jar文件,并通过terminal中的脚本执行它——效果非常好。

在这两种情况下,我都得到了正确的相对路径:“/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/”,应该是。。。

知道为什么会这样吗?

共有1个答案

拓拔麒
2023-03-14

最后我用了下一种方法

new File(ClassName.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());

我得到了一个执行jar的路径,然后一些字符串的操作,然后它工作了...

不是最“优雅”的方式,但有效:)

 类似资料:
  • 问题内容: 我正在尝试在qt内执行一个Java文件,这是我的Java文件代码: 问题是如何调用此java文件,我很困惑&不知道如何调用函数onUpdate,有什么想法吗? 问题答案: 要在Qt Android应用程序中运行Java代码,您应该使用Qt Android Extras 模块,该模块包含用于在Android上进行开发的其他功能。 您可以使用JNI从C / C 调用Java函数或从Java

  • 问题内容: 我们有一个Perl脚本,该脚本运行SQL并将数据放入表中。现在,我们不想传递一个SQL语句,而是希望传递一堆将它们放在一起的.sql文件中。我们知道我们的程序将失败,因为它期望一个SQL语句,而不是一堆SQL语句(也来自.sql文件)。我们如何使其与.sql文件(具有多个INSERT语句?)一起使用。我们正在使用DBI软件包。 一小段代码: 问题答案: 不确定您想要什么… 创建DBI对

  • 调用GET /actuator/logfile返回404错误。 我如何通过执行器/日志文件获取日志? 我有下面的配置。 我使用“本地”配置文件启动了应用程序。 我有日志文件在日志文件夹(例如api_log.2020-09-22-0.log)。 应用yml公司 logback-spring.xml 日志/file.xml /执行器/日志文件endpoint启用。

  • 问题内容: 一直在玩cython。通常使用Python进行编程,但前世曾使用C。我不知道如何制作一个独立的可执行文件。 我已经下载了cython,并可以创建一个.pyx文件(这是一个带有.pyx扩展名的普通Python文件),可以使用以下命令在Python Shell中执行:import pyximport; pyximport.install() 我可以使用以下命令在命令行中生成.c文件:cyt

  • 问题内容: 我正在使用linux mint,并且要运行python文件,我必须在终端中输入:,那么有没有办法使该文件可执行,并使其在我双击时自动运行命令? 而且自从我停止处理Windows以来,我想知道那里的.py文件是否也可以自动执行,还是我需要一些步骤。 谢谢 问题答案: 您必须添加一个shebang。shebang是文件的第一行。系统正在寻找其执行文件的条件。 它看起来应该像这样: 或真实的

  • 我正试图通过C#中的webdriver执行一个javascript文件。以下是我目前掌握的情况: jsfile.js的内容包括 然而当我执行