gpt4 book ai didi

java - 访问 .jar 中的数据

转载 作者:搜寻专家 更新时间:2023-11-01 02:53:01 24 4
gpt4 key购买 nike

我目前正在将一个程序放入 .jar 中,但很难告诉它从哪里获取数据。数据在项目的文件中,我确信它也位于 jar 中。但是我不知道如何找到进入 jar 的路径。

我在网上找到了 getClass().getClassLoader().getResourceAsStream() 方法来将输入流导入到 jar 中,但是因为我一直使用 FileReaders , 我也不知道该怎么办..

如有任何帮助,我将不胜感激。

编辑:

这是目录组织方式的图片: The console displays a solution, since everything actually runs

我的命令窗口显示如果我运行 .jar 会发生什么。第 30 行中的 Nullpointer。我在使用和不使用 .getClassLoader() 的情况下进行了尝试,但它就是找不到它。这是 jar 的内部: 同样,应用程序是类文件所在的位置。因此,通过 class.getResource.. 我应该能够在 DataPackeg 中搜索。伙计,这让我筋疲力尽。

最佳答案

要理解的一个关键概念是文件不存在于 jar 中。您必须改为将数据作为只读资源获取,并且您需要使用相对于类文件路径的路径。

如果您仍然遇到困难,您可能需要告诉我们有关您当前程序的更多细节、它的结构、您尝试获取的数据类型、它在 jar 文件中的位置以及您如何尝试使用它。

例如,假设您的包结构如下所示:

enter image description here

所以类文件位于 codePackage 包中(这是 Eclipse,所以类文件与 java 文件存在于一个平行的宇宙中),资源的位置在 codePackage.images 包中,但是 相对于class文件是images目录,你可以这样使用资源:

package codePackage;

import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;

public class ClassUsesResources {
private JLabel label = new JLabel();

public ClassUsesResources() {
try {
BufferedImage img = ImageIO.read(getClass().getResourceAsStream(
"images/img001s.jpg"));
ImageIcon icon = new ImageIcon(img);
label.setIcon(icon);

JOptionPane.showMessageDialog(null, label);
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
}

public static void main(String[] args) {
new ClassUsesResources();
}
}

关于java - 访问 .jar 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7536553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com