繁体   English   中英

从依赖于外部库的终端运行Java

[英]run java from terminal that depend on external libraries

我已经读了很多书,但是还没有找到解决方案。

我正在使用lwjgl ,它需要2个jar和一个本机库来运行: lwjgl.jarlwjgl_util.jar和本机库。 无论如何,我已经尽我所能尝试了所有方法,现在我正在尝试使用以下命令:

java - Djava.library.path="libs/natives/" -cp libs/jars/lwjgl.jar:libs/jars/lwjgl_util.jar DisplayTest.class

但我尝试通过各种方式得到:

Exception in thread "main" java.lang.NoClassDefFoundError: DisplayTest/class
Caused by: java.lang.ClassNotFoundException: DisplayTest.class
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: DisplayTest.class. Program will exit

哦,也许值得一提的是,我正在Linux终端上工作。 另外,我使它在日食中运行得很好,所以我真的不明白这里发生了什么。

首先,您只需要将类名传递给java:

java -Djava.library.path="libs/natives/" 
     -cp libs/jars/lwjgl.jar:libs/jars/lwjgl_util.jar DisplayTest

(换行符以提高可读性)

我会尝试以下方法:

1)使用CLASSPATH环境变量,如下所示:

  CLASSPATH=.:/path/to/lwjgl/lwjgl.jar:/path/to/lwjgl/lwjgl_util.jar 
  export CLASSPATH

注意类路径最开始的点(。);

2)运行您的Java应用程序:

  java -Djava.library.path="libs/natives" DisplayTest

如果可行,请将以上命令添加到Shell脚本中。 祝好运!

尝试脱掉“ .class”,例如

java -Djava.library.path =“ libs / natives /” -cp libs / jars / lwjgl.jar:libs / jars / lwjgl_util.jar DisplayTest.class

会成为:

java -Djava.library.path =“ libs / natives /” -cp libs / jars / lwjgl.jar:libs / jars / lwjgl_util.jar DisplayTest

通过添加“ .class”,您告诉命令您在名为“ DisplayTest”的目录中具有一个名为“ class”的类,而这并不是您要实现的目标。 这行显示:

Exception in thread "main" java.lang.NoClassDefFoundError: DisplayTest/class

触发Java命令时,请使用-cp或-classpath。 输入仅java命令以查看用法

我也遇到类似的错误。

只需在运行时将工作目录(在其中拥有自己的类)以及所需的库包括在内。

当计算机在运行时无法找到您的.class文件时(即使它们已编译,即仅在运行时也不会给出错误),会发生NoCLassDefFoundError

步骤1:编译javac -classpath“ path / to / lib1:path / to / lib2” yourfile.java步骤2:运行Java-类路径“ path / to / lib1:path / to / lib2:path / to / your / currentdirectory / wheredotdotclass / filecreated /“ yourfile

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM