java - 如何在 java jar 文件中创建正确的资源文件路径
问题描述
坐在这里有一个更大的 java 项目(对于一年级软件学生)在创建正确的资源文件路径时遇到了一些麻烦。
我现在有 .txt、.png、.jpg 和 .gif 格式的文件。
现在我使用这样的路径来查找文本文件:
File userFile = new File("Source Code/files/users.txt");
或者像这样的路径来创建在我的 FX 代码中加载的图像:
File logoPath = new File("Source code/files/graphics/Streamy_logo.png");
Image logoImage = new Image(logoPath.toURI().toString());
logo.setImage(logoImage);
这在我的 IDE (IntelliJ) 中工作正常,但是当我将项目创建为 Jar 文件时它不起作用。我认为这与未在 jar 文件中创建的“源代码”目录有关,这现在很有意义。
尝试阅读不同的主题,但如果我应该使用 getResources 方法、设置 resourceStream 或其他东西,它似乎有点不同。
任何人都可以帮我解决这个问题。谢谢!
解决方案
您不能在 .jar 文件中加载这样的文件,这里有一个关于如何读取 BufferedImages 的示例。但首先,请确保您已将资源文件夹标记为 IntelliJ 中的资源文件夹,方法是右键单击项目视图中的文件夹,然后转到“将目录标记为”并检查资源根目录。
BufferedImage exampleBlock = null;
try {
exampleBlock = ImageIO.read(ClassLoader.getSystemResource("exampleBlock.png"));
} catch (IOException e) {
e.printStackTrace();
}
通过使用这种获取文件的方法,您的所有文件都将被实现到 .jar 文件中,您可以通过调用它们的文件名+扩展名来使用它们
推荐阅读
- node.js - Specifying a custom role for lambda with the AWS CDK
- sql - Join with a groupby operation in SQL
- jenkins - Jenkins 通过 GKE 上的 Helm 为每个构建创建并且不删除从属 pod
- c++ - 修改 Makefile 以简化框架#include 路径
- python - 张量流中的“有状态对象”是什么?
- c++ - 在 MS Visual Studio 2017 中将 boost::thread 与 CMake 一起使用会导致两个编译器错误
- java - 如何为泛型方法编写简洁的闭包?
- php - WAMP 已开始生成 SQLSTATE[HY000] [2002] 错误
- github - Azure Pipelines in Enterprise Github
- r - rpart 可以同时处理数字数据和分类数据吗?