JAVA,批处理文件错误

时间:2014-08-18 01:27:21

标签: java eclipse batch-file jar

我有一个现有的Java项目,可以通过Eclipse编译和运行。我创建了以下.bat文件来运行Eclipse没有的程序:

java -classpath jflashplayer.jar;bin TestProgram

该文件保存在项目文件夹中,但不在bin文件夹中(与bin位于同一目录中)。当我尝试运行批处理时,遇到大量运行时错误,第一个是

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils

我不确定为什么在编译并通过Eclipse正常运行时会出现此错误。我有将Eclipse中项目链接的commons-io jar文件作为库,jar文件本身位于项目文件中(与批处理文件和bin文件夹相同的目录)。

另外,我不完全确定批处理文件的-classpath jflashplayer.jar位是做什么的。我正在使用jflashlayer.jar库(也链接到Eclipse中的项目以及与其他jar文件相同的位置),但我不确定它为什么会出现在批处理文件中。我从一个使用jflashplayer.jar文件的类似项目中编辑了一个现有的批处理文件,并且它之前已经工作过将该部分保留下来。

当我用Java编写代码时,我很少需要它在IDE之外编译/运行,所以在这部分时我通常会遇到麻烦。除了批处理文件方法之外,在IDE之外运行程序可能还有一种更健壮且更加万无一失的方法。

1 个答案:

答案 0 :(得分:1)

批处理文件方法很好,但您必须在类路径中指定您正在使用的所有库,就像jflashplayer.jar一样。

在这种情况下,您获得的错误是因为未在类路径中指定Apache commons-io库。你的命令必须看起来像:

java -classpath jflashplayer.jar;commons-io.jar;<other jars ...>;bin TestProgram

或者,您可以按照here所述从Eclipse创建一个可运行的jar。选择库处理策略时,请选择将所需库提取到生成的JAR 选项。这将使您所使用的所有库类都打包到您的应用程序的jar文件中,您可以通过调用java -jar my_application.jar来执行它。