为什么我的 LWJGL 程序会出现此错误?

时间:2021-05-21 23:34:43

标签: java eclipse lwjgl

我正在尝试使用 Java 使用 OpenGL(使用 LWJGL 2)制作一个窗口。当我尝试运行时,Eclipse BuiltInClassLoader 出现 ClassNotFoundException 错误。

我已尝试寻找正确的 jar 文件,但无法打开 jar 文件以查看其中包含哪些包。这是我的代码:

DisplayManager.java

package renderEngine;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.PixelFormat;
import org.lwjgl.opengl.ContextAttribs;

public class DisplayManager {

   private static final int WIDTH = 1280;
   private static final int HEIGHT = 720;
   private static final int FPS_CAP = 120;

   public static void createDisplay(){

      ContextAttribs attribs = new ContextAttribs(3, 2);
      attribs.withForwardCompatible(true);
      attribs.withProfileCore(true);

      try{
          Display.setDisplayMode(new DisplayMode(WIDTH, 
          HEIGHT))
          Display.create(new PixelFormat(), attribs);
      }catch(LWJGLException e){
         e.printStackTrace();
      }

      GL11.glViewport(0, 0, WIDTH, HEIGHT);

   }

   public static void updateDisplay(){
      Display.sync(FPS_CAP);
      Display.update();

   }

   public static void closeDisplay(){

      Display.destroy();

   }

}

MainGameLoop.java

package engineTester;

import org.lwjgl.opengl.Display;

import renderEngine.DisplayManager;

public class MainGameLoop {

   public static void main(String[] args) {

      DisplayManager.createDisplay();

      while(!Display.isCloseRequested()){

         DisplayManager.updateDisplay();

      }

      DisplayManager.closeDisplay();

   }

}

我希望输出显示一个窗口,这是真正的输出:

<块引用>

线程“main”中的异常java.lang.NoClassDefFoundError: org/lwjgl/LWJGLException 在 engineTester.MainGameLoop.main(MainGameLoop.java:11) 引起: java.lang.ClassNotFoundException: org.lwjgl.LWJGLException 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 1个

1 个答案:

答案 0 :(得分:0)

您可能将 lwjgl 的 jar 文件放在模块路径中

我之前遇到过同样的错误,因此要修复此错误,请确保将所有 3 个 jar 文件移动到 Classpath 中,即 lwjgl_util.jarlwjgl.jar,和 slick-util

为此,右键单击 MainGameLoopDisplayManager 所在的 Java 项目,然后将鼠标悬停在 构建路径,然后然后点击Configure Build Path,进入Libraries,在这里你会看到3个jar文件。如果 jar 文件在模块路径中!将其移动到 Classpath 中,单击 Apply 并关闭,然后您应该就可以了!

如果问题仍未解决!那么您可能拥有 Java Runtime Environment(JRE) 1.7 或更低版本!如果是这样,您可以在此处下载 JRE 1.8:https://www.oracle.com/java/technologies/javase-jre8-downloads.html

希望这有帮助!也祝你有美好的一天。