Memory access and missing library.

Started by Jakibah, December 08, 2016, 17:30:53

Previous topic - Next topic

Jakibah

I have this Main:

package com.jakibah.tridlwjgl;
import org.lwjgl.glfw.*;
import org.lwjgl.opengl.*;

import org.lwjgl.Version;

import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.system.MemoryUtil.*;

public class Main {

    // We need to strongly reference callback instances.
    private GLFWErrorCallback errorCallback;
    private GLFWKeyCallback keyCallback;

    // The window handle
    private long window;

    public void run() {
        System.out.println("Hello LWJGL " + Version.getVersion() + "!");

        try {
            init();
            loop();

            
            glfwDestroyWindow(window);
            keyCallback.free();
        } finally {
            
            glfwTerminate();
            errorCallback.free();
        }
    }

    private void init() {
       
        glfwSetErrorCallback(errorCallback = GLFWErrorCallback.createPrint(System.err));

       
        if (!glfwInit()) {
            throw new IllegalStateException("Unable to initialize GLFW");
        }

       
        glfwDefaultWindowHints(); // optional, the current window hints are already the default
        glfwWindowHint(GLFW_VISIBLE, GL_FALSE); // the window will stay hidden after creation
        glfwWindowHint(GLFW_RESIZABLE, GL_TRUE); // the window will be resizable

        int WIDTH = 300;
        int HEIGHT = 300;

       
        window = glfwCreateWindow(WIDTH, HEIGHT, "Hello World!", NULL, NULL);
        if (window == NULL) {
            throw new RuntimeException("Failed to create the GLFW window");
        }

        
        glfwSetKeyCallback(window, keyCallback = new GLFWKeyCallback() {
            @Override
            public void invoke(long window, int key, int scancode, int action, int mods) {
                if (key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE) {
                    glfwSetWindowShouldClose(window, true); // We will detect this in our rendering loop
                }
            }
        });

       
        GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
       
        glfwSetWindowPos(
                window,
                (vidmode.width() - WIDTH) / 2,
                (vidmode.height() - HEIGHT) / 2
        );

       
        glfwMakeContextCurrent(window);
       
        glfwSwapInterval(1);

       
        glfwShowWindow(window);
    }

    private void loop() {
       
        GL.createCapabilities();

      
        glClearColor(1.0f, 0.0f, 0.0f, 0.0f);

        
        while ( !glfwWindowShouldClose(window)) {
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

            glfwSwapBuffers(window); 

            
            glfwPollEvents();
        }
    }

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

}


And it gives some error:
Hello LWJGL 3.0.0 build 90!
[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 "main" java.lang.NoClassDefFoundError: Could not initialize class org.lwjgl.system.MemoryAccess
	at org.lwjgl.system.Pointer.<clinit>(Pointer.java:22)
	at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:562)
	at com.jakibah.tridlwjgl.Main.run(Main.java:32)
	at com.jakibah.tridlwjgl.Main.main(Main.java:107)


It is my first time using LWJGL 3. What are this errors and how can I solve them?

spasi

The easiest way to fix this is to add the natives JARs to the classpath. Running with -Dorg.lwjgl.util.Debug=true and -Dorg.lwjgl.util.DebugLoader=true will give you more information.