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
有多种方法可以实现
- 推荐 将类路径位置添加到 运行 命令,或者传递 jar 位置,假设您有两个 jar 文件 a.jar 和 b.jar在你的lib文件夹下,命令应该是
java -cp".;lib/a.jar;lib/b.jar" Entry
- 要么将 jar 文件放入已经在类路径下的位置(由于当前文件夹始终在类路径下,最简单的选择是将 jar 文件放在当前文件夹下,但这不是推荐的实现方式)
- 修改环境属性下的类路径变量以列出包含您的 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
暂停
希望对您有所帮助。谢谢。
如何从命令行 运行 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
有多种方法可以实现
- 推荐 将类路径位置添加到 运行 命令,或者传递 jar 位置,假设您有两个 jar 文件 a.jar 和 b.jar在你的lib文件夹下,命令应该是
java -cp".;lib/a.jar;lib/b.jar" Entry
- 要么将 jar 文件放入已经在类路径下的位置(由于当前文件夹始终在类路径下,最简单的选择是将 jar 文件放在当前文件夹下,但这不是推荐的实现方式)
- 修改环境属性下的类路径变量以列出包含您的 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
暂停
希望对您有所帮助。谢谢。