Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 外部jar中的资源加载不起作用_Java_Eclipse_Jar_Lwjgl_Slick2d - Fatal编程技术网

Java 外部jar中的资源加载不起作用

Java 外部jar中的资源加载不起作用,java,eclipse,jar,lwjgl,slick2d,Java,Eclipse,Jar,Lwjgl,Slick2d,我正在使用LWJGL和Slick2d制作一个游戏,当然,我的jar中有游戏资产可以导出使用。但是,它们无法从我使用jarsplice创建的runnable.jar中加载,但将在它们与.jar文件位于同一文件夹中时运行。我正试图使用.getSystemResource()和.getSystemResourceAsStream()在Eclipse内的源代码中加载文件来解决此问题,但它不起作用。我花了几个小时在stackoverflow、gamedev.net、lwjgl论坛和slick2d论坛中搜索

我正在使用LWJGL和Slick2d制作一个游戏,当然,我的jar中有游戏资产可以导出使用。但是,它们无法从我使用jarsplice创建的runnable.jar中加载,但将在它们与.jar文件位于同一文件夹中时运行。我正试图使用.getSystemResource()和.getSystemResourceAsStream()在Eclipse内的源代码中加载文件来解决此问题,但它不起作用。我花了几个小时在stackoverflow、gamedev.net、lwjgl论坛和slick2d论坛中搜索,以便在Eclipse导出的JAR中加载资源,但毫无结果。以下是我经历的过程:

1) 我配置我的构建路径-所有内容都包含在内,没有任何内容被排除

2) 正确添加所有库

3) 选择所有内容进行订购和导出

4) 我将导出为一个通用(non-runnable).jar,取消选择代码未引用的文件夹和包。包含我的音频、图像和着色器的文件夹已正确标记为要导出

5) 我打开.jar文件,所有的东西都在里面。此时,清单文件为空

6) 我使用jarsplice创建了一个fat.jar,首先添加.jar文件

7) 接下来,我添加lwjgl所需的所有本地人

8) 最后,我使用完整的包路径进入我的主类

9) 当我创建.jar并查看内部时,所有内容都按其应有的方式包括在内

此外,清单文件现在已正确填写:

Manifest-Version: 1.0
Launcher-VM-Args: 
Launcher-Main-Class: com.fafnir.gestalt.Bootstrap
Main-Class: org.ninjacave.jarsplice.JarSpliceLauncher
10) 使用“java-jar FatRunnable.jar”运行.jar时,我收到错误,因此我创建了一个.bat文件来运行它,并将输出记录在一个文本文件中:

java -jar FatRunnable.jar %* > log.txt
PAUSE
11) 我检查文本文件并看到以下内容:

Wed Jul 30 17:42:11 EDT 2014 INFO:Initialising sounds..
[LWJGL] getPathFromClassLoader: searching for: OpenAL32
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] getPathFromClassLoader: searching for: lwjgl
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] getPathFromClassLoader: searching for: lwjgl
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] Found 6 OpenAL paths
[LWJGL] Testing 'C:\Users\MOTHAF~1\AppData\Local\Temp\\natives-1942957663\OpenAL64.dll'
[LWJGL] Found OpenAL at 'C:\Users\MOTHAF~1\AppData\Local\Temp\\natives-1942957663\OpenAL64.dll'
[LWJGL] MemoryUtil Accessor: AccessorUnsafe
Wed Jul 30 17:42:11 EDT 2014 INFO:- Sound works
Wed Jul 30 17:42:11 EDT 2014 INFO:- 64 OpenAL source available
Wed Jul 30 17:42:11 EDT 2014 INFO:- Sounds source generated
[LWJGL] Initial mode: 1600 x 900 x 32 @60Hz
[LWJGL] Found 32 displaymodes
[LWJGL] Removed 20 duplicate displaymodes
Detected display modes:
800x600x32 60Hz
1600x900x16 60Hz
640x480x16 60Hz
1024x768x16 60Hz
1280x720x32 60Hz
1280x800x16 60Hz
800x600x16 60Hz
1600x900x32 60Hz
640x480x32 60Hz
1024x768x32 60Hz
1280x720x16 60Hz
1280x800x32 60Hz
[LWJGL] GL_EXT_direct_state_access was reported as available but an entry point is missing
OpenGL version: 3.2.9712 Core Profile Forward-Compatible Context
Could not read file.
java.io.FileNotFoundException: glsl\textured.vs (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:131)
    at java.io.FileInputStream.<init>(FileInputStream.java:87)
    at java.io.FileReader.<init>(FileReader.java:58)
    at com.fafnir.gestalt.quads.QuadUpdateVBO.loadShader(QuadUpdateVBO.java:180)
    at com.fafnir.gestalt.quads.QuadUpdateVBO.setupShaders(QuadUpdateVBO.java:146)
    at com.fafnir.gestalt.quads.QuadUpdateVBO.<init>(QuadUpdateVBO.java:49)
    at com.fafnir.gestalt.Bootstrap.setupArtists(Bootstrap.java:167)
    at com.fafnir.gestalt.Bootstrap.<init>(Bootstrap.java:72)
    at com.fafnir.gestalt.Bootstrap.main(Bootstrap.java:38)
AL lib: (EE) alc_cleanup: 1 device not closed
Could not locate symbol glEnableClientStateiEXT
Could not locate symbol glDisableClientStateiEXT
Could not locate symbol glGetFloati_vEXT
Could not locate symbol glGetDoublei_vEXT
Could not locate symbol glGetPointeri_vEXT
Could not locate symbol glNamedCopyBufferSubDataEXT
Could not locate symbol glVertexArrayIndexOffsetEXT
Could not locate symbol glVertexArrayVertexAttribOffsetEXT
Could not locate symbol glVertexArrayVertexAttribIOffsetEXT
Could not locate symbol glEnableVertexArrayEXT
Could not locate symbol glDisableVertexArrayEXT
Could not locate symbol glEnableVertexArrayAttribEXT
Could not locate symbol glDisableVertexArrayAttribEXT
Could not locate symbol glGetVertexArrayIntegervEXT
Could not locate symbol glGetVertexArrayPointervEXT
Could not locate symbol glGetVertexArrayIntegeri_vEXT
Could not locate symbol glGetVertexArrayPointeri_vEXT
Could not locate symbol glMapNamedBufferRangeEXT
Could not locate symbol glFlushMappedNamedBufferRangeEXT
13) loadShader方法在eclipse中工作,但不适用于.jar,如下所示:

public static int loadShader(String fileName, int type) {
    final StringBuilder shaderSource = new StringBuilder();
    int shaderID = 0;

    try {
        final BufferedReader reader = new BufferedReader(new FileReader(fileName));
        String line;
        while ((line = reader.readLine()) != null) {
            shaderSource.append(line).append("\n");
        }
        reader.close();
    } catch (final IOException e) {
        System.err.println("Could not read file.");
        e.printStackTrace();
        System.exit(-1);
    }

    shaderID = GL20.glCreateShader(type);
    GL20.glShaderSource(shaderID, shaderSource);
    GL20.glCompileShader(shaderID);

    if (GL20.glGetShaderi(shaderID, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
        // Check for any OpenGL errors
        OpenGLHelper.exitOnGLError("Error in quads.QuadUpdateVBO.loadShader()");
    }

    return shaderID;
}
14) 我试图将其更改为使用类加载器,以便它能够与.jar中打包的资源一起工作,但我甚至无法使它在eclipse中工作。这是我的新方法:

public static int loadShader(String fileName, int type) {
    final StringBuilder shaderSource = new StringBuilder();
    int shaderID = 0;

    try (InputStream shaderStream = QuadUpdateVBO.class.getResourceAsStream(fileName);
            BufferedReader reader = new BufferedReader(new InputStreamReader(shaderStream))) {
        String line;
        while ((line = reader.readLine()) != null) {
            shaderSource.append(line).append("\n");
        }
    } catch (final IOException e) {
        System.err.println("Could not read file.");
        e.printStackTrace();
        System.exit(-1);
    }

    shaderID = GL20.glCreateShader(type);
    GL20.glShaderSource(shaderID, shaderSource);
    GL20.glCompileShader(shaderID);

    if (GL20.glGetShaderi(shaderID, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
        // Check for any OpenGL errors
        OpenGLHelper.exitOnGLError("Error in quads.QuadUpdateVBO.loadShader()");
    }

    return shaderID;
}
下面是运行引导类时Eclipse控制台的输出:

Wed Jul 30 17:58:02 EDT 2014 INFO:Initialising sounds..
[LWJGL] getPathFromClassLoader: searching for: OpenAL32
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] getPathFromClassLoader: searching for: lwjgl
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] getPathFromClassLoader: searching for: lwjgl
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] Found 14 OpenAL paths
[LWJGL] Testing 'C:\Program Files\eclipse\external jars\LWJGL     2.9.2\native\windows\OpenAL64.dll'
[LWJGL] Found OpenAL at 'C:\Program Files\eclipse\external jars\LWJGL     2.9.2\native\windows\OpenAL64.dll'
[LWJGL] MemoryUtil Accessor: AccessorUnsafe
Wed Jul 30 17:58:03 EDT 2014 INFO:- Sound works
Wed Jul 30 17:58:03 EDT 2014 INFO:- 64 OpenAL source available
Wed Jul 30 17:58:03 EDT 2014 INFO:- Sounds source generated
[LWJGL] Initial mode: 1600 x 900 x 32 @60Hz
[LWJGL] Found 32 displaymodes
[LWJGL] Removed 20 duplicate displaymodes
Detected display modes:
800x600x32 60Hz
1600x900x16 60Hz
640x480x16 60Hz
1024x768x16 60Hz
1280x720x32 60Hz
1280x800x16 60Hz
800x600x16 60Hz
1600x900x32 60Hz
640x480x32 60Hz
1024x768x32 60Hz
1280x720x16 60Hz
1280x800x32 60Hz
[LWJGL] GL_EXT_direct_state_access was reported as available but an entry point is     missing
OpenGL version: 3.2.9712 Core Profile Forward-Compatible Context
Exception in thread "main" java.lang.NullPointerException
    at java.io.Reader.<init>(Unknown Source)
    at java.io.InputStreamReader.<init>(Unknown Source)
    at com.fafnir.gestalt.quads.QuadUpdateVBO.loadShader(QuadUpdateVBO.java:194)
    at com.fafnir.gestalt.quads.QuadUpdateVBO.setupShaders(QuadUpdateVBO.java:147)
    at com.fafnir.gestalt.quads.QuadUpdateVBO.<init>(QuadUpdateVBO.java:50)
    at com.fafnir.gestalt.Bootstrap.setupArtists(Bootstrap.java:167)
    at com.fafnir.gestalt.Bootstrap.<init>(Bootstrap.java:72)
    at com.fafnir.gestalt.Bootstrap.main(Bootstrap.java:38)
AL lib: (EE) alc_cleanup: 1 device not closed
Could not locate symbol glEnableClientStateiEXT
Could not locate symbol glDisableClientStateiEXT
Could not locate symbol glGetFloati_vEXT
Could not locate symbol glGetDoublei_vEXT
Could not locate symbol glGetPointeri_vEXT
Could not locate symbol glNamedCopyBufferSubDataEXT
Could not locate symbol glVertexArrayIndexOffsetEXT
Could not locate symbol glVertexArrayVertexAttribOffsetEXT
Could not locate symbol glVertexArrayVertexAttribIOffsetEXT
Could not locate symbol glEnableVertexArrayEXT
Could not locate symbol glDisableVertexArrayEXT
Could not locate symbol glEnableVertexArrayAttribEXT
Could not locate symbol glDisableVertexArrayAttribEXT
Could not locate symbol glGetVertexArrayIntegervEXT
Could not locate symbol glGetVertexArrayPointervEXT
Could not locate symbol glGetVertexArrayIntegeri_vEXT
Could not locate symbol glGetVertexArrayPointeri_vEXT
Could not locate symbol glMapNamedBufferRangeEXT
Could not locate symbol glFlushMappedNamedBufferRangeEXT
Wed Jul 30 17:58:02 EDT 2014信息:初始化声音。。
[LWJGL]getPathFromClassLoader:搜索:OpenAL32
[LWJGL]未能找到findLibrary方法:java.lang.NoSuchMethodException:sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL]未能找到findLibrary方法:java.lang.NoSuchMethodException:java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL]未能找到findLibrary方法:java.lang.NoSuchMethodException:java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL]getPathFromClassLoader:搜索:LWJGL
[LWJGL]未能找到findLibrary方法:java.lang.NoSuchMethodException:sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL]未能找到findLibrary方法:java.lang.NoSuchMethodException:java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL]未能找到findLibrary方法:java.lang.NoSuchMethodException:java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL]getPathFromClassLoader:搜索:LWJGL
[LWJGL]未能找到findLibrary方法:java.lang.NoSuchMethodException:sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL]未能找到findLibrary方法:java.lang.NoSuchMethodException:java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL]未能找到findLibrary方法:java.lang.NoSuchMethodException:java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL]找到14条开放路径
[LWJGL]测试'C:\Program Files\eclipse\external jars\LWJGL 2.9.2\native\windows\OpenAL64.dll'
[LWJGL]在“C:\Program Files\eclipse\external jars\LWJGL 2.9.2\native\windows\OpenAL64.dll”中找到OpenAL
[LWJGL]内存直到存取器:存取器不安全
美国东部时间2014年7月30日星期三17:58:03信息:-声音作品
美国东部时间2014年7月30日星期三17:58:03信息:-提供64个开放源码
星期三2014年7月30日17:58:03美国东部时间信息:-生成的声音源
[LWJGL]初始模式:1600x900x32@60Hz
[LWJGL]找到32种显示模式
[LWJGL]删除了20个重复的显示模式
检测到的显示模式:
800x600x32 60Hz
1600x900x16 60Hz
640x480x16 60Hz
1024x768x16 60Hz
1280x720x32 60Hz
1280x800x16 60Hz
800x600x16 60Hz
1600x900x32 60Hz
640x480x32 60Hz
1024x768x32 60Hz
1280x720x16 60Hz
1280x800x32 60Hz
[LWJGL]GL_EXT_direct_state_访问报告为可用,但缺少入口点
OpenGL版本:3.2.9712核心概要文件正向兼容上下文
线程“main”java.lang.NullPointerException中出现异常
位于java.io.Reader。(未知源)
位于java.io.InputStreamReader。(未知源)
位于com.fafnir.genstalt.quads.QuadUpdateVBO.loadShader(QuadUpdateVBO.java:194)
位于com.fafnir.genstalt.quads.QuadUpdateVBO.setupShaders(QuadUpdateVBO.java:147)
位于com.fafnir.genstalt.quads.QuadUpdateVBO。(QuadUpdateVBO.java:50)
位于com.fafnir.genstalt.Bootstrap.setupArtists(Bootstrap.java:167)
格式塔引导(Bootstrap.java:72)
位于com.fafnir.genstalt.Bootstrap.main(Bootstrap.java:38)
AL lib:(EE)alc_清理:1个设备未关闭
找不到符号GlenableClientStateText
找不到符号GLDisableClientStateText
找不到符号glGetFloati\u vEXT
找不到符号glGetDoublei\u vEXT
找不到符号glGetPointeri\u vEXT
找不到符号glNamedCopyBufferSubDataEXT
找不到符号glVertexArrayIndexOffsetText
找不到符号glVertexArrayVertexAttribOffsetEXT
找不到符号glVertexArrayVertexAttribIOffsetEXT
找不到符号GlenableVertexArrayText
找不到符号GLDisableVertexArrayText
找不到符号glEnableVertexArrayAttribEXT
找不到符号glDisableVertexArrayAttribEXT
找不到符号GLGetVertexArrayIntegerText
找不到符号GLGetVertexArrayPointerText
找不到symb
Wed Jul 30 17:58:02 EDT 2014 INFO:Initialising sounds..
[LWJGL] getPathFromClassLoader: searching for: OpenAL32
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] getPathFromClassLoader: searching for: lwjgl
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] getPathFromClassLoader: searching for: lwjgl
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException:     java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] Found 14 OpenAL paths
[LWJGL] Testing 'C:\Program Files\eclipse\external jars\LWJGL     2.9.2\native\windows\OpenAL64.dll'
[LWJGL] Found OpenAL at 'C:\Program Files\eclipse\external jars\LWJGL     2.9.2\native\windows\OpenAL64.dll'
[LWJGL] MemoryUtil Accessor: AccessorUnsafe
Wed Jul 30 17:58:03 EDT 2014 INFO:- Sound works
Wed Jul 30 17:58:03 EDT 2014 INFO:- 64 OpenAL source available
Wed Jul 30 17:58:03 EDT 2014 INFO:- Sounds source generated
[LWJGL] Initial mode: 1600 x 900 x 32 @60Hz
[LWJGL] Found 32 displaymodes
[LWJGL] Removed 20 duplicate displaymodes
Detected display modes:
800x600x32 60Hz
1600x900x16 60Hz
640x480x16 60Hz
1024x768x16 60Hz
1280x720x32 60Hz
1280x800x16 60Hz
800x600x16 60Hz
1600x900x32 60Hz
640x480x32 60Hz
1024x768x32 60Hz
1280x720x16 60Hz
1280x800x32 60Hz
[LWJGL] GL_EXT_direct_state_access was reported as available but an entry point is     missing
OpenGL version: 3.2.9712 Core Profile Forward-Compatible Context
Exception in thread "main" java.lang.NullPointerException
    at java.io.Reader.<init>(Unknown Source)
    at java.io.InputStreamReader.<init>(Unknown Source)
    at com.fafnir.gestalt.quads.QuadUpdateVBO.loadShader(QuadUpdateVBO.java:194)
    at com.fafnir.gestalt.quads.QuadUpdateVBO.setupShaders(QuadUpdateVBO.java:147)
    at com.fafnir.gestalt.quads.QuadUpdateVBO.<init>(QuadUpdateVBO.java:50)
    at com.fafnir.gestalt.Bootstrap.setupArtists(Bootstrap.java:167)
    at com.fafnir.gestalt.Bootstrap.<init>(Bootstrap.java:72)
    at com.fafnir.gestalt.Bootstrap.main(Bootstrap.java:38)
AL lib: (EE) alc_cleanup: 1 device not closed
Could not locate symbol glEnableClientStateiEXT
Could not locate symbol glDisableClientStateiEXT
Could not locate symbol glGetFloati_vEXT
Could not locate symbol glGetDoublei_vEXT
Could not locate symbol glGetPointeri_vEXT
Could not locate symbol glNamedCopyBufferSubDataEXT
Could not locate symbol glVertexArrayIndexOffsetEXT
Could not locate symbol glVertexArrayVertexAttribOffsetEXT
Could not locate symbol glVertexArrayVertexAttribIOffsetEXT
Could not locate symbol glEnableVertexArrayEXT
Could not locate symbol glDisableVertexArrayEXT
Could not locate symbol glEnableVertexArrayAttribEXT
Could not locate symbol glDisableVertexArrayAttribEXT
Could not locate symbol glGetVertexArrayIntegervEXT
Could not locate symbol glGetVertexArrayPointervEXT
Could not locate symbol glGetVertexArrayIntegeri_vEXT
Could not locate symbol glGetVertexArrayPointeri_vEXT
Could not locate symbol glMapNamedBufferRangeEXT
Could not locate symbol glFlushMappedNamedBufferRangeEXT
package com.fafnir.gestalt.helpers;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URISyntaxException;
import java.net.URL;

import org.newdawn.slick.openal.Audio;
import org.newdawn.slick.openal.AudioLoader;
import org.newdawn.slick.util.ResourceLoader;

public class ResourceHandler {

/**
 * Returns a buffered reader of the input file from a (non/)streaming resource
 * 
 * @param filePath
 * @param streaming
 * @return
 */
public static BufferedReader loadIntoBufferedReader(String filePath, boolean streaming) {
    BufferedReader reader = null;
    if (streaming) {
        InputStream stream = ResourceLoader.getResourceAsStream(filePath);
        InputStreamReader isr = new InputStreamReader(stream);
        reader = new BufferedReader(isr);
    } else {
        URL url = ResourceLoader.getResource(filePath);

        try (FileReader freader = new FileReader(url.toURI().toString())) {
            reader = new BufferedReader(freader);
        } catch (FileNotFoundException fnfe) {
            System.err.println("File " + filePath + " does not exist!");
            fnfe.printStackTrace();
            System.exit(1);
        } catch (URISyntaxException urise) {
            System.err.println("Bad URI syntax for " + filePath + "!");
            urise.printStackTrace();
            System.exit(1);
        } catch (IOException ioe) {
            System.err.println("File " + filePath + " couldn't be read/written to!");
            ioe.printStackTrace();
            System.exit(1);
        }
    }

    return reader;
}

/**
 * Returns an InputStream of the input file
 * 
 * @param filePath
 * @return
 */
public static InputStream loadIntoInputStream(String filePath) {
    InputStream stream = ResourceLoader.getResourceAsStream(filePath);
    return stream;
}

/**
 * Returns an Audio object of the input file as a stream
 * 
 * @param type
 * @param filePath
 * @return
 */
public static Audio loadIntoAudio(String type, String filePath, boolean streaming) {
    Audio audio = null;
    try {
        if (streaming) {
            audio = AudioLoader.getStreamingAudio(type, ResourceLoader.getResource(filePath));
        } else {
            audio = AudioLoader.getAudio(type, ResourceLoader.getResourceAsStream(filePath));
        }
    } catch (final IOException ioe) {
        System.err.println("File " + filePath + " couldn't be read/written to!");
        ioe.printStackTrace();
        System.exit(1);
    }
    return audio;
}