以下适用于我的 Windows 机器,但我已经为 linux 格式调整了 shell 命令(冒号与分号):
设置目录结构如下:
/HelloWorld.java
/lib/jwjgl.jar
/lib/jinput.jar
/lib/jwjgl_util.jar
/native/linux/... (all your native files)
编译:
在您的 shell 中,导航到包含 HelloWorld.java 的父目录,然后键入以下内容:
javac -cp .:lib/* HelloWorld.java
-cp
指定用于编译程序的 .java 和 .class文件可以在 .
(当前目录)和. 请注意,您可以手动指定文件,即等,但(我相信仅限 java 1.6+)是指定目录中所有 jar 的快捷方式。jar
lib/
.jar
-cp .:lib/lwjgl.jar:lib/jinput.jar
*
跑:
现在从父目录运行以下命令:
java -cp .:lib/* -Djava.library.path=native/linux HelloWorld
同样,-cp
指定您的编译.class
文件可以在当前目录和该/lib
目录下的任何 jar 中找到。-Djava.library.path=
指定可以找到本机文件的位置。请注意,您没有/
在native
. 通过省略前导/
,您告诉 java 该native
目录是相对于当前工作目录的子目录。如果您不小心包含了/
,它会将 native 视为绝对目录,这可能不是您想要的。
为当前工作目录之外的本机文件指定一个位置是完全可以接受的。为此,您必须提供绝对位置,例如在 Windows 上:
-Djava.library.path=C:\jwjgl-2.8.4\native\windows
这应该是您在没有 IDE 或构建脚本的情况下启动并运行所需的全部内容!
最后说明
所写的HelloWorld.java
,表现不佳(屏幕锁定,您必须强制关闭进程)。尝试使用以下代码(改编自网络上的多个源,稍作修改以适应此示例,但主要不是我自己的努力),作为HelloWorld.java
. 享受!
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.input.Keyboard;
public class HelloWorld{
public void start() {
try {
Display.setDisplayMode(new DisplayMode(640, 480));
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}
// Init OpenGL
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(-3.2, 3.2, -2.4, 2.4, -1, 1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
boolean quit = false;
while (!quit) {
// Clear the screen.
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
// Begin drawing
GL11.glBegin(GL11.GL_TRIANGLES);
// Top & Red
GL11.glColor3f(1.0f, 0.0f, 0.0f);
GL11.glVertex2f(0.0f, 1.0f);
// Right & Green
GL11.glColor3f(0.0f, 1.0f, 0.0f);
GL11.glVertex2f(1.0f, 1.0f);
// Left & Blue
GL11.glColor3f(0.0f, 0.0f, 1.0f);
GL11.glVertex2f(1.0f, -1.0f);
GL11.glEnd();
Display.update();
if (Display.isCloseRequested() || Keyboard.isKeyDown(Keyboard.KEY_ESCAPE))
quit = true;
}
Display.destroy();
}
public static void main(String args[]) {
HelloWorld application = new HelloWorld();
application.start();
}
}