带有引用库的Java程序:NoClassDefFound

时间:2015-05-04 13:38:46

标签: java jar terminal classpath command-line-interface

如何在命令行中使用几个引用的库,.jar文件在Java中运行程序? 我已将所有.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 异常

我该怎么办?

2 个答案:

答案 0 :(得分:1)

你需要告诉JVM在运行程序时在哪里查找类。 我们用来告诉jvm的参数,叫做 classpath

有不同的方法来实现这个目标

  1. 推荐将类路径位置添加到run命令,或者传递jar位置,假设在lib文件夹下有两个jar文件a.jar和b.jar,命令应为{{ 1}}
  2. 将jar文件放入已经在classpath下的位置(因为当前文件夹总是在classpath下,最简单的选择是将jar放在当前文件夹下,但这不是推荐的实现方式)
  3. 修改环境属性下的classpath变量,列出包含jar的文件夹,这是实现此目的的一种简单方法。

答案 1 :(得分:1)

创建一个批处理文件(.bat)并将jar保留在其中。无论何时您想运行,然后直接运行该批处理文件。我猜它非常简单有效。

实施例: @echo off

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

SET LIB =%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

暂停

我希望它会对你有所帮助。感谢。