当前位置: 首页 > 面试题库 >

如何正确引用资源文件进行JAR和调试?

韦星文
2023-03-14
问题内容

使用Maven项目和Jar文件时,在引用资源时遇到麻烦的问题…

我将所有资源都放在一个专用文件夹/ src / main / resources中,该文件夹是Eclipse中构建路径的一部分。使用以下文件引用文件

getClass().getResource("/filename.txt")

这在Eclipse中工作正常,但在Jar文件中失败-资源位于jar根目录正下方的文件夹中…

有谁知道在JAR和Eclipse中同时引用文件的“最佳实践”?

编辑: 问题是,尽管资源实际上位于JAR的顶级文件夹“资源”中,但是上述方法无法找到该文件…


问题答案:

Maven资源文件夹的内容被复制到目标/类,并从那里复制到生成的Jar文件的根目录。那是预期的行为。

我不明白的是您的方案中存在的问题。引用资源getClass().getResource("/filename.txt")始于类路径的根,无论该路径(或其元素)是target/classesJAR的根。我看到的唯一可能的错误是您使用的是错误的ClassLoader

确保使用资源的类与资源在相同的工件(JAR)中,并执行do
ThatClass.class.getResource("/path/with/slash")ThatClass.class.getClassLoader().getResource("path/without/slash")

但是除此之外:如果它不起作用,则可能是在构建过程中某处做错了。您可以验证资源是否在JAR中?



 类似资料:
  • 问题内容: 我知道还有其他针对同一问题的问题,但问题是解决方案对我不起作用。我有一个小工具,它应该读取我想拥有的文件并将其打包为资源,并依赖于其他我希望将其作为jar而不是单个类的项目(我正在使用Eclipse Helios)。 作为Eclipse中的应用程序,我可以通过以下方式访问资源 当且仅当将资源文件夹放置在输出路径(已编译的源)下时,并且如果将其放置在src文件夹中时,则不是这样。 当我打

  • 问题内容: 我通过Java程序读取的路径中有hibernate.cfg.xml和test.txt。现在,当我使用maven创建jar时,这些文件不存在。所以我读到我应该放在资源文件夹中,所以现在我的目录结构是 scr->主要-> Java 现在我可以看到jar中的文件,但是它们根本不在资源文件夹中 myjar.jar-> com(源代码) 我尝试使用访问 getClass()。getResourc

  • 问题内容: 我有全部传播异常的方法,然后在一个地方处理,但是我意识到了一些事情。 假设我有这样的方法 我的问题是,如果doSometing()方法引发异常,该语句将不会关闭,但我不想在那里处理异常。尝试并捕获只会抛出异常并最终关闭语句的正确方法吗? 问题答案:

  • 问题内容: 在清理一些代码时,FindBugs向我介绍了一些使用Connection,CallableStatement和ResultSet对象的JDBC代码。这是该代码的一个片段: FindBugs指出这些应该在finally块内。我开始重构我的代码来做到这一点,我开始想知道如何在finally块中处理代码。 Connection对象的CallableStatement的创建可能会引发异常,而我

  • 问题内容: 我正在尝试从作为桌面应用程序运行的单独jar中访问jar文件中的XML文件。我可以获取所需文件的URL,但是当我将其传递给FileReader(作为字符串)时,我得到了FileNotFoundException,上面写着“文件名,目录名或卷标语法不正确”。 作为参考,我毫不费力地从同一个jar中读取图像资源,并将URL传递给ImageIcon构造函数。这似乎表明我用来获取URL的方法是

  • 本文向大家介绍如何对网站的文件和资源进行优化相关面试题,主要包含被问及如何对网站的文件和资源进行优化时的应答技巧和注意事项,需要的朋友参考一下 1.文件合并(目的是减少http请求) 2.文件压缩 (目的是直接减少文件下载的体积) 3.使用cdn托管资源 4.使用缓存 5.gizp压缩需要的js和css文件 6.meta标签优化(title,description,keywords),headin