繁体   English   中英

从可执行JAR运行代码时无法加载资源

[英]Can't load resources when running the code from an executable JAR

我遇到这个问题,当我运行程序的JAR时,没有资源加载。 我已经更改了代码,并检查了加载图像和声音的代码确实不起作用。 当我在eclipse中运行它时,它工作得很好。 我检查了7-Zip,声音和图像文件不再位于res文件夹中。 在导出程序之前,我尝试更改程序中的路径文件和资源的位置,但这没有用。 在构建路径中,我还将res文件夹作为源文件夹。 我正在使用eclipse导出JAR,然后使用JarSplicer将我的库添加到其中。 以下是加载图像和声音资源的代码:

-加载声音-

public static WaveData LoadSound(String path){
    WaveData sound = null;
    try {
        sound = WaveData.create(new BufferedInputStream(new FileInputStream(path)));
    } catch (Exception e) {
        e.printStackTrace();
    }

    return sound;
}

-加载图像-

public static Texture LoadTexture(String path,  String fileType){
    Texture tex = null;
    InputStream in = ResourceLoader.getResourceAsStream(path);
    try{
        tex = TextureLoader.getTexture(fileType,in);
    }catch(IOException e){
        e.printStackTrace();
    }
    return tex;
}

这是我在命令提示符下的错误:

在此处输入图片说明

这是我每次导出时jar中的文件(无论资源是否为res):

在此处输入图片说明

我被困在这里。 如果有人知道如何解决此问题,请帮助我。

我找到了解决我问题的方法。

ResourseLoader.getResourceStreamAs()在JAR文件中不起作用,因此,如果它是静态的,则需要执行getClass().getResourceStreamAs()[ClassName].class.getResourceStreamAs()

另外,我还必须将文件的位置从res/[resource file]/[resource]更改为/[resource file]/[resource]因为导出时,它会取出res中的所有文件。 另外,您必须确保在路径的开头具有/ ,以便将其指定为在源文件夹中进行搜索,否则它将在名为getResourceStreamAs()的类的文件夹中进行搜索。 而且, new FileInputStream()在JAR文件中不起作用,因此您必须使用[ClassName].class.getResourceStreamAs() 哦,最重要的是,我有几个文件无缘无故地以某种方式使扩展名成为其名称。 所以这给了我一些困惑。 基本上,我只需要花很多时间去摆弄代码,但是我可以正常工作了!

还有一件事:确保将resources文件夹添加到构建路径的“源”选项卡中,否则eclipse不会导出它。 而且,如果您希望将库导出到JAR中,则必须使用JarSplicer制作一个胖罐子,以手动添加它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM