Java 具有引用库的程序:NoClassDefFound

Java program with referenced libraries: NoClassDefFound

如何从命令行 运行 Java 中的程序,其中包含多个引用库、.jar 文件? 我已将所有 .jars 放入项目根文件夹中的 /lib 文件夹中,并将这些 .jars 添加到构建路径中。 所以我的项目现在看起来像这样:

项目:

-->/src/Entry.java, ... (all them .java files)

-->/bin/Entry.class, ... (all them other .class files)

-->/lib/commons-codec-1.10./(all them .jars)*

现在,当我尝试从 cmd 运行 程序时: 我在 /bin 文件夹中找到自己并执行 java Entry,但我得到 NoClassDefFound 异常

我应该如何运行这个?

您需要在 运行 运行程序时告诉 JVM 在哪里寻找 类。 我们用来告诉 jvm 的参数被称为 classpath

有多种方法可以实现

  1. 推荐 将类路径位置添加到 运行 命令,或者传递 jar 位置,假设您有两个 jar 文件 a.jar 和 b.jar在你的lib文件夹下,命令应该是java -cp".;lib/a.jar;lib/b.jar" Entry
  2. 要么将 jar 文件放入已经在类路径下的位置(由于当前文件夹始终在类路径下,最简单的选择是将 jar 文件放在当前文件夹下,但这不是推荐的实现方式)
  3. 修改环境属性下的类路径变量以列出包含您的 jar 的文件夹,这是实现此目的的一种简单方法。

创建一个批处理文件 (.bat) 并将 jars 保存在其中。每当你想运行然后直接运行那个批处理文件。我想它非常简单和高效。

示例: @回声关闭

SET PATH=%PATH%;E:\Java\jdk1.6.0_45\bin // JDK 路径

设置库=%cd%\lib

设置CP="" 设置 CP=%CP%;%LIB%\antlr-2.7.6

设置 CP=%CP%;%LIB%\commons-codec-1.8.jar

设置 CP=%CP%;%LIB%\opencsv-2.3.jar

javac -classpath %cp% *.java

java -classpath %CP% -Xms256m -Xmx1024m -Xss2m T2DPreProcessing

暂停

希望对您有所帮助。谢谢。