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

如何在Jar中正确打包资源

苏星宇
2023-03-14
问题内容

我知道还有其他针对同一问题的问题,但问题是解决方案对我不起作用。我有一个小工具,它应该读取我想拥有的文件并将其打包为资源,并依赖于其他我希望将其作为jar而不是单个类的项目(我正在使用Eclipse
Helios)。

作为Eclipse中的应用程序,我可以通过以下方式访问资源

String path = MyClass.class.getClassLoader().getResource("resources/" + name + ".SOURCE").getPath();
System.out.println(path);
File file = new File(MyClass.class.getClassLoader().getResource("resources/" + name + ".SOURCE").toURI());
defaultSource = readSOURCEFile(file);

当且仅当将资源文件夹放置在输出路径(已编译的源)下时,并且如果将其放置在src文件夹中时,则不是这样。

当我打包项目时,根本不会打包根文件夹或classes文件夹中的资源。如果我的src文件夹中有资源,它将打包在src / resources下。

我使用Export-Runnable Jar,我在做什么错?如果我尝试使用Export-
Jar,则可以正确打包我的源和资源,但是在设置主类时遇到问题,无法执行jar。清单是正确的,并且类在那里:-(。

第二个问题:在打包的jar中,我得到以下错误:URI不是分层的(在我手动移动了jar中的资源之后,我可以执行jar)

提前致谢!

我已将源链接到工作区,这是一个问题吗?


问题答案:

resource在Eclipse中将项目的根文件夹下的文件夹标记为“源文件夹”(右键单击该文件夹,然后转到“构建路径”>“用作源文件夹”)。然后阅读如下资源:

InputStream is = MyClass.class.getClassLoader().getResourceAsStream(name + ".SOURCE");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();


 类似资料:
  • 我想做一个UI组件,然后使用的是Vue3+Vite+Ts+tailwindcss 问题出现在这个静态资源这里,我的静态资源放在了src/assets下,包括图片还有style.css, 然后我使用Vite的库模式打包,并没有打包我的style.css文件,只打包了vue文件中的style标签的css,并且静态文件的图片也是没有打包,而是直接转换成了base64,对于图片多的情况下,这样页面会很卡顿

  • 我有一个自由标记 ftl 模板文件,该文件包含在 IntelliJ 项目中的标签库中。问题是 JspTaglibs 在 IntelliJ 中没有解决。该错误突出显示文本 ,错误消息为“无法解析变量'JspTaglibs'”。文件内容如下: 这是一个导入的Maven项目。包含的ftl位于一个已编译的JAR文件中,我将它作为内容根包含在一个Web模块中。 关于解析“JspTaglibs”以便可以为自由

  • 我正在尝试导入一个jar文件。我的文件“test.java”包含一行: 注意:我使用的是Mac电脑。

  • 问题内容: 我需要从罐子中加载属性文件。该罐子包含在war文件中。这是结构 现在,我在一个servlet中编写了以下代码,如下所示: 但是上面的代码我得到流为空。如果我将属性文件放在ROOT.war / WEB- INF中,则可以正常工作。我有一个不错的主意,如果getResourceAsStream中的路径以“ /”开头,那么它将在上下文根目录中搜索资源。但是,如何读取位于jar的资源,该jar

  • 我已经尝试了很多方法,并遵循了几个在线说明,比如这个-Eclipse导出的Runnable JAR不显示图像,但到目前为止,没有成功。 我有一个非常简单的程序,读取一个文本文件(test.txt),并将其内容打印到标准输出。我正在使用Eclipse。这是我所做的- 我将文本文件放入名为“资源”的文件夹中 任何帮助都将不胜感激。 附录:这是代码。 }

  • 我有一个项目,从一个标签为RES的文件夹中读取图形和音效。此文件夹与src文件夹处于同一目录级别。我已将res标记为资源根。 我通过Project Structure->Artifacts->Add(Alt+Insert)->JAR将工件配置为包含res作为内容目录 是否有一种方法可以将工件构建配置到合适的位置?我希望在jar文件中包含资源,这样它就可以作为一个独立的jar,没有外部依赖关系。