本文介绍了LWJGL:无法加载库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

一直试图在Linux上使用'lwjgl',当我从终端运行编译后的代码时遇到问题.我正在使用lwjgl 3的稳定版本.

Have been trying to work with 'lwjgl' on linux and am running into an issue when I run my compiled code from the terminal. I am using the stable release of lwjgl 3.

我从网站上下载了lwjgl.jar并运行命令javac -cp lwjgl.jar: Main.java可以很好地编译代码.然后我运行:java -cp lwjgl.jar: Main之后,它将引发此错误;

I downloaded the lwjgl.jar from the website and run the command javac -cp lwjgl.jar: Main.javawhich compiles the code fine. Then I run: java -cp lwjgl.jar: Main after and it throws this error;

[LWJGL] Failed to load a library. Possible solutions:
    a) Set -Djava.library.path or -Dorg.lwjgl.librarypath to the directory that contains the shared libraries.
    b) Add the JAR(s) containing the shared libraries to the classpath.
[LWJGL] Enable debug mode with -Dorg.lwjgl.util.Debug=true for better diagnostics.
Exception in thread "EndlessRunner" java.lang.UnsatisfiedLinkError: Failed to locate library: liblwjgl.so
    at org.lwjgl.system.Library.loadSystemRelative(Library.java:100)
    at org.lwjgl.system.Library.loadSystem(Library.java:71)
    at org.lwjgl.system.Library.<clinit>(Library.java:43)
    at org.lwjgl.system.MemoryAccess.<clinit>(MemoryAccess.java:17)
    at org.lwjgl.system.Pointer.<clinit>(Pointer.java:22)
    at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:562)
    at Main.init(Main.java:31)
    at Main.run(Main.java:78)
    at java.lang.Thread.run(Thread.java:745)

我不确定我是否也错过了一些我需要的文件,或者我是否打算以完全错误的方式进行操作.这是我正在使用的代码,只是我在网上找到的一些代码,我正在将其用作测试.

I'm not sure if I missed some files that I needed too or if I'm going about this entirely the wrong way. Here is the code I am using, it's just some that I found online and I'm using as a test.

import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.system.MemoryUtil.*;
import java.nio.ByteBuffer;
import org.lwjgl.glfw.GLFWVidMode;

public class Main implements Runnable{

private Thread thread;
public boolean running = true;

private long window;

private int width = 1200, height = 800;

public static void main(String args[]){
    Main game = new Main();
    game.start();
}

public void start(){
    running = true;
    thread = new Thread(this, "EndlessRunner");
    thread.start();
}

public void init(){
    // Initializes our window creator library - GLFW
    // This basically means, if this glfwInit() doesn't run properlly
    // print an error to the console
    if(glfwInit() != true){
        // Throw an error.
        System.err.println("GLFW initialization failed!");
    }

    // Allows our window to be resizable
    glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);

    // Creates our window. You'll need to declare private long window at the
    // top of the class though.
    // We pass the width and height of the game we want as well as the title for
    // the window. The last 2 NULL parameters are for more advanced uses and you
    // shouldn't worry about them right now.
    window = glfwCreateWindow(width, height, "Endless Runner", NULL, NULL);

    // This code performs the appropriate checks to ensure that the
    // window was successfully created.
    // If not then it prints an error to the console
    if(window == NULL){
        // Throw an Error
        System.err.println("Could not create our Window!");
    }

    // creates a bytebuffer object 'vidmode' which then queries
    // to see what the primary monitor is.
    //ByteBuffer vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
    // Sets the initial position of our game window.
    glfwSetWindowPos(window, 100, 100);
    // Sets the context of GLFW, this is vital for our program to work.
    glfwMakeContextCurrent(window);
    // finally shows our created window in all it's glory.
    glfwShowWindow(window);
}

public void update(){
    // Polls for any window events such as the window closing etc.
    glfwPollEvents();
}

public void render(){
    // Swaps out our buffers
    glfwSwapBuffers(window);
}

@Override
public void run() {
    // All our initialization code
    init();
    // Our main game loop
    while(running){
        update();
        render();
        // Checks to see if either the escape button or the
        // red cross at the top were pressed.
        // if so sets our boolean to false and closes the
        // thread.
        if(glfwWindowShouldClose(window) == true){
            running = false;
        }
    }
}

}

非常感谢你们能提供的帮助.

Any help you guys can give would be very much appreciated.

谢谢.

推荐答案

我只能说使用NetBeans 8运行LWJGL 3,但是我也遇到了同样的错误.我发现的问题与最初设置LWJGL时需要添加到"classpath"选项卡的本地" jar文件有关.这样做的原因是它使LWJGL能够自动查找本机jar.然后,在您的VM设置下,您需要将其设置为:

I can only speak from using NetBeans 8 to run LWJGL 3, but I also got the same error. The problem I found had to do with the "native" jar files needing to be added to the "classpath" tab when setting up LWJGL initially. The reason for this is that it enables LWJGL to automatically find the native jars. Then under your VM settings you will want to set it to:

-Djava.library.path="Path to where you extracted JAR files"

如果路径名包含任何空格,则仅包含引号

这篇关于LWJGL:无法加载库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-15 11:25