【问题标题】:Start my application from my home folder (relative path)从我的主文件夹(相对路径)启动我的应用程序
【发布时间】:2013-08-10 04:34:12
【问题描述】:

这是一个 100% 获胜的控制台应用程序。 那么问题来了。

我想加载我想放在 jar 中的文件 music.xm。 当我尝试通过相对路径调用文件时出现问题。启动目录不是 Java 项目,而是我的 Windows 用户文件夹。

如果我打电话

File music = new File("\\music.xm");


javax.sound.sampled.UnsupportedAudioFileException: /C:/Users/XXXX/Desktop/./music/music.xm

如果我打电话

    File music = new File(".\\music.xm");

我明白了

    javax.sound.sampled.UnsupportedAudioFileException: /C:/music.xm

【问题讨论】:

    标签: java path relative-path


    【解决方案1】:

    如果它在你的罐子里,你可以使用

    getclassLoader().getResourceAsStream("music.xm")
    

    您可以随意使用这个 inputStream。但请记住,路径应该相对于类加载器的类路径根目录。

    此外,如果您确定“music.xm”作为independent file on filesystem 存在于您的.class 文件的固定相对位置,您也可以使用:

    getclassLoader().getResource("music.xm")
    

    您可以查看on SO 和此处查看documentation。

    【讨论】:

    • 我基本上将 music.xm 复制到我的 netbeans 项目的所有文件夹中,但我仍然得到一个空指针异常。字符串路径 = FirstBoot.class.getClassLoader().getResource("music.xm").toString(); System.out.print(路径);文件音乐 = 新文件(路径);
    • NPE(很可能)是因为缺少资源。该资源将在您的所有编译代码所在的target 目录中查找。顺便说一句,你是如何包装你的罐子的?
    • 在 netbeans 中清理和构建,没什么特别的。并且在 jar 中文件实际上存在。
    • 使用“music/music.xm”并在项目中创建具有此名称的文件夹我收到此错误:[ModuleFactory] ​​加载文件失败:/C:/Users\XXXX/Desktop/jar :file:/C:/Users/XXX/Documents/NetBeansProjects/happyh/dist/happyh.jar!/music/music.xm 好奇怪的路径……
    • 那是因为您试图将其作为文件访问 - getResource()。使用getResourceAsStream()
    猜你喜欢
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多