【问题标题】:How to get the path of file when make a jar file in Java在Java中制作jar文件时如何获取文件路径
【发布时间】:2018-12-31 01:33:06
【问题描述】:

我正在用 java 构建一个游戏,当我在 intellij idea 中运行它时一切正常,没有错误。

当我将项目构建为 jar 文件时,问题就开始了。

我有这个方法:

public void addImageOfObject(String add, String dir, ArrayList<ImageIcon> linkedList, Dimension size) {
    Image image;
    String dirc;
    File file = null;
    try {
        file = new File(classLoader.getResource(dir).getFile());
    } catch (Exception e) {
        JOptionPane.showMessageDialog(StaticVariables.mainClass, e.getStackTrace());
    }
    try {
        for (int i = 0; file.listFiles().length > i; i++) {
            try {
                dirc = dir + i + ".png";
                image = loadImage(dirc);
                linkedList.add(new ImageIcon(image.getScaledInstance(size.width, size.height, 4)));
            } catch (Exception e) {
                JOptionPane.showMessageDialog(StaticVariables.mainClass, e.getStackTrace());
                e.printStackTrace();
            }

        }

    } catch (Exception e) {
        JOptionPane.showMessageDialog(StaticVariables.mainClass, e.getStackTrace());
        JOptionPane.showMessageDialog(StaticVariables.mainClass, "file not found ");
    }
}

这是类加载器:

ClassLoader classLoader = ClassLoader.getSystemClassLoader();

我无法获得文件的正确路径..当我在 jar 文件中运行它时,它会给出一个错误文件:

file = new File(classLoader.getResource(dir).getFile()); 

我用这一行调用方法:

imageLoader.addImageOfObject("src/main/java/","ImageHandel/Photos/character/male/attack/down/",aMale,new Dimension(500,400));

这是文件的路径

我要获取的文件数file.listFiles()

在男性文件夹中有 44 个文件..这是我想要获得的数字以便在 44 次循环上运行,我只是找不到正确的方法!我尝试了很多东西,但没有任何帮助..

有什么问题吗?

【问题讨论】:

    标签: java file intellij-idea jar


    【解决方案1】:

    您只需在运行 jar 文件的位置创建文件夹,

    ImageHandel/照片/角色/男/攻击/下/

    通过考虑该位置在 jar 文件中运行它。

    用于添加静态文件夹以提供图像,例如在spring boot中我们可以配置静态文件夹如下:

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/ImageHandel/**")
                .addResourceLocations("file:ImageHandel/")
                .setCachePeriod(0);
    }
    

    【讨论】:

    • 问题是如何从jar文件内部获取文件路径
    • url/ImageHandel/Photos/character/male/attack/down/xyz.png
    猜你喜欢
    • 1970-01-01
    • 2011-04-25
    • 2010-10-30
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多