Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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 OpenAL所需_Java_Shared Libraries_Openal_Openal Soft - Fatal编程技术网

本机库,Java OpenAL所需

本机库,Java OpenAL所需,java,shared-libraries,openal,openal-soft,Java,Shared Libraries,Openal,Openal Soft,我正在尝试使用JavaOpenAL库。我在导入名为libsoft_oal.so的本机库时遇到问题。Java OpenAL依赖于OpenAL软实现。我试图根据他们在github上的自述来构建它,似乎只编译了libopenal.so库。JavaOpenAL已经4年没有更新了,所以在我看来,这个库只是被重命名了。我重新命名了图书馆,但运气不好。我认为我的库路径是正确的,我尝试使用java.library.path参数运行jvm,但没有成功。 以下是stacktrace: Exception in th

我正在尝试使用JavaOpenAL库。我在导入名为libsoft_oal.so的本机库时遇到问题。Java OpenAL依赖于OpenAL软实现。我试图根据他们在github上的自述来构建它,似乎只编译了libopenal.so库。JavaOpenAL已经4年没有更新了,所以在我看来,这个库只是被重命名了。我重新命名了图书馆,但运气不好。我认为我的库路径是正确的,我尝试使用java.library.path参数运行jvm,但没有成功。 以下是stacktrace:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'soft_oal': libsoft_oal.so: cannot open shared object file: No such file or directory
    at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:169)
    at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:242)
    at com.sun.jna.Library$Handler.<init>(Library.java:140)
    at com.sun.jna.Native.loadLibrary(Native.java:368)
    at com.sun.jna.Native.loadLibrary(Native.java:353)
    at org.urish.openal.jna.ALFactory.<init>(ALFactory.java:16)
    at org.urish.openal.OpenAL.<init>(OpenAL.java:24)
    at defaultpackage.SoundTest.<init>(SoundTest.java:22)
    at defaultpackage.SoundTest.main(SoundTest.java:17)
:run FAILED

FAILURE: Build failed with an exception.

有没有一种不直接修改库的方法来解决这个问题?谢谢

我编辑了这个库,现在一切都很好。我还在GitHub上创建了一个pull请求。

我已经编辑了库,现在一切正常。我还在GitHub上创建了一个pull请求

public class ALFactory {
    private static final String DEFAULT_DLL_NAME = "soft_oal";

    public final AL al;
    public final ALC alc;
    public final ALExt alext;

    public ALFactory() {
        al = (AL) Native.loadLibrary(DEFAULT_DLL_NAME, AL.class);
        alc = (ALC) Native.loadLibrary(DEFAULT_DLL_NAME, ALC.class);
        alext = (ALExt) Native.loadLibrary(DEFAULT_DLL_NAME, ALExt.class);
    }

    public ALFactory(File dllPath) throws FileNotFoundException {
        String dllName = DEFAULT_DLL_NAME;
        if (dllPath != null) {
            if (!dllPath.exists()) {
                throw new FileNotFoundException(dllPath.getAbsolutePath());
            }
            System.setProperty("jna.library.path", dllPath.getParent());
            dllName = dllPath.getName();
        }

        al = (AL) Native.loadLibrary(dllName, AL.class);
        alc = (ALC) Native.loadLibrary(dllName, ALC.class);
        alext = (ALExt) Native.loadLibrary(dllName, ALExt.class);
    }
}