【问题标题】:Application bundle on OS X does not work, file addressing problemOS X 上的应用程序包不起作用,文件寻址问题
【发布时间】:2010-03-06 15:49:03
【问题描述】:

我的应用程序需要一个 XML 文件才能工作,而且它甚至无法在没有该文件的情况下启动。为什么我将我的应用程序捆绑为 JAR 文件,只要将 XML 文件放在与 JAR 文件相同的目录中,它就可以正常工作。

当我将项目导出为 OS X 应用程序包时,该应用程序无法运行。如果我将 XML 文件复制到应用程序包所在的同一目录中,它就可以工作。

所以我很确定从我的 Java 代码中访问 XML 文件是一个小的寻址问题。我想将 XML 文件放入应用程序包中。简单地将其复制到 JAR 文件所在的同一目录中是行不通的。

文件,或者更好的文件地址如下:doc = sax.build("file.xml"); 并且直接位于我的项目文件夹中。 我正在使用 Eclipse,并将我的项目直接从 Eclipse 导出为应用程序包。 我还使用 OS X Jar Bundler 进行了尝试,它提供了相同的结果。

那么,我如何正确处理我的文件,以便将它们放入应用程序包中?

感谢任何帮助!非常感谢!

【问题讨论】:

    标签: java xml packaging addressing


    【解决方案1】:

    您很可能将其作为物理文件读入,该文件需要位于当前工作目录中。

    您是否考虑过将其作为资源读取,而不是允许通过类路径找到它?

    【讨论】:

    • 我还没有处理资源文件。有关如何执行此操作以及将文件放置在何处的任何建议?
    • 您可能想使用java.sun.com/j2se/1.4.2/docs/api/java/lang/… 注意,要从根目录加载build.xml,而不是在加载的类旁边,请使用“/build.xml”。它可能在您的 jar 文件或文件系统中(如果您的类路径中有“.”)
    • 对不起,我很愚蠢,但我真的不知道该怎么做。我确实意识到我可以使用 getResource() 或 getResourceAsStream() 方法读取文件,但我仍然不知道如何访问显式文件以及将其放在我的项目文件夹中的什么位置。正如我所说,我以前从未这样做过,我在网上找不到任何有用的信息。另一个问题是,我的 XML 文件在我的代码中进行了修改,因此仅读取资源不足以解决我的问题。
    • 我用 getClass().getResource("/file.html"); 尝试了你的建议;对于我的 html 帮助页面,它在我的 IDE 中运行良好,但是一旦我将项目导出为应用程序包,就无法访​​问该文件。
    猜你喜欢
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多