我制作了一个使用Apache Commons io和lang3库的程序。
它在eclipse中运行正常,但是我无法从cmd运行它并且它出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/la ng3/StringUtils
at mainActivity.main(mainActivity.java:37)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
如何让它从cmd运行(以便它在批处理文件中运行)
**我比较新,我在Win 8上(我没有使用Maven)**
答案 0 :(得分:1)
将必要的jar添加到类路径中。视窗:
> java -classpath yourjar.jar;lib\*.jar com.example.Main
Unix的:
$ java -classpath yourjar.jar:lib/*.jar com.example.Main
唯一的区别是目录分隔符(/
/ \
)和路径分隔符(:
/ ;
)。这假设您的Apache jar位于项目的lib
目录中。
答案 1 :(得分:1)
从eclipse运行程序时,Eclipse会在类路径中添加jar文件。但是当您运行相同的表单命令提示符时,jars文件需要显式位于类路径中。
有两种方式
java -classpath“.; c:\ yourLib *”YourApp
其中yourLib
是包含apache-commons jar的文件夹。
CLASSPATH
环境变量的值设置为;
设置CLASSPATH = D:\ yourLib \
然后运行没有classpath选项的程序。运行时将从之前定义的环境变量中选择所需的类路径。
java YourApp
注意:我假设是Windows平台。
答案 2 :(得分:0)
您必须让您的JAVA了解您正在使用的库。 Java不知道在哪里查找这些库。
答案 3 :(得分:0)
使用apache-commons库更新类路径。
答案 4 :(得分:0)
您的类路径有问题。 Eclipse能够使用项目设置来解析类路径中的运行时库依赖项。在java的commons-lang*.jar
中添加commons-io*.jar
和classpath
个文件。您可以使用-cp
或-classpath
选项在命令行上设置classpath。
答案 5 :(得分:0)
您需要在CMD窗口中手动添加每个jar文件。您可以使用-cp
执行此操作例如
java -cp /path/to/file;/path/to/anotherfile ...
另外,请记住使用正确的路径分隔符 - ;
用于Windows,:
用于linux
答案 6 :(得分:-1)
如果你正在使用Maven那么
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>