2016-02-08 5 views
1

Так что я программист с умеренным новичком, но после долгого перерыва над этой ошибкой я не могу найти решение. Я делаю головоломку, и по какой-то причине она просто отказывается бежать сейчас. Я всегда получаю эту ошибку:java.lang.NoClassDefFoundError в LWJGL при попытке запуска в Eclipse

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.lwjgl.system.Library 
    at org.lwjgl.system.MemoryAccess.<clinit>(MemoryAccess.java:22) 
    at org.lwjgl.system.Pointer.<clinit>(Pointer.java:24) 
    at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:594) 
    at Graphics.LaunchWindow.run(LaunchWindow.java:32) 
    at Graphics.LaunchWindow.main(LaunchWindow.java:96) 

Eclipse, говорит мне, что ни один из моего кода не имеют ошибок в нем, и повторной LWJGL не работает (я пытался как стабильная 3.0.0b сборки 64 и ночной 3.0.0 сборка 22). Я видел другие подобные вопросы, связанные с тем, что lwjgl.jar находится на пути к классу, но я несколько раз проверял. Кроме того, если это имеет значение, у меня есть lwjgl_util.jar и slick_util.jar в пути к классу, и даже если они устарели по сравнению с lwjgl 3, удаление их из пути класса не имеет значения.

package Graphics; 

import org.lwjgl.glfw.*; 
import org.lwjgl.opengl.*; 

import Controls.KeyParser; 
import Controls.KeyboardInput; 

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

public class LaunchWindow { 

private GLFWErrorCallback errorCallback; 
private GLFWKeyCallback keyCallback; 

public int width = 1024; 
public int height = 600; 
public String title = "Duplicity"; 
public long fullscreen = NULL; 
public long window; 

public void run() { 

    try { 
     init(); 
     loop(); 
     glfwDestroyWindow(window); 
     keyCallback.release(); 
    } finally { 
     glfwTerminate(); 
     errorCallback.release(); 
    } 
} 

private void init() { 

    glfwSetErrorCallback(errorCallback = GLFWErrorCallback.createPrint(System.err)); 

    KeyboardInput.initiate(); 

    if (glfwInit() != GLFW_TRUE) 
     throw new IllegalStateException("Unable to initialize GLFW"); 

    if(fullscreen == NULL){ 
     glfwDefaultWindowHints(); 
     glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); 
     glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); 
    } 

    window = glfwCreateWindow(width, height, title, fullscreen, 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, GLFW_TRUE); 
     } 
    }); 

    GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor()); 
    glfwSetWindowPos(window, (vidmode.width() - width)/2, (vidmode.height() - height)/2); 
    glfwMakeContextCurrent(window); 
    glfwSwapInterval(1); 
    glfwShowWindow(window); 

    keyCallback = GLFWKeyCallback.create(KeyboardInput::glfw_key_callback); 
    keyCallback.set(window); 

    /* mouseButtonCallback = GLFWMouseButtonCallback.create(Mouse::glfw_mouse_button_callback); 
    mouseButtonCallback.set(window); 

    cursorPosCallback = GLFWCursorPosCallback.create(Mouse::glfw_cursor_pos_callback); 
    cursorPosCallback.set(window); */ 

    GL.createCapabilities(); 
} 

public void loop() { 

    GL.createCapabilities(); 
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 

    while (glfwWindowShouldClose(window) == GLFW_FALSE) { 
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
     glfwSwapBuffers(window); 
     glfwPollEvents(); 
     new KeyParser().checkKeyState(); 
    } 
} 

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

Это уже был дан ответ. См. Решение [здесь] (http://stackoverflow.com/questions/34459196/org-lwjgl-system-library-error). –

+0

Я борюсь с той же проблемой, но в моем случае это наоборот. Он работает в Eclipse, но не из командной строки (включая собственный путь). Он работал с _LWJGL 3.0.0a_, но поскольку я обновился до _3.0.0b_, я получаю эту ошибку. –

ответ

0

Некорректный путь библиотечной системы может быть одной из причин этой ошибки, но это также может быть вызвано системной библиотека несовместимостью (на Linux). Код, включенный в LWJGL 3, требует GLIBC версии 2.14 или выше. Если ваша система (например, Linux) старше (например, Debian Wheezy), ваша версия GLIBC будет старше требуемой. Если это так, вам нужно установить новую версию GLIBC или обновить систему (например, до Debian Jessie). НТН,

M