首页 > 解决方案 > Java 项目在 Eclipse 上运行,但在使用批处理时出错

问题描述

我为我的大学做了一个项目。我需要传递命令行参数的地方。它在 Eclipse 上运行得非常好,但是当我使用批处理文件运行它时。

编译时出错

我的批处理文件看起来像

set path = "c:\Program Files\Java\jdk-14.0.2\bin";
javac FileHand.java
java FileHand DirectBuffer 1024 Sample.txt
pause

标签: javaeclipsebatch-fileruntime-error

解决方案


根本不要设置 %path%。如果您想对 java 的完整路径进行“硬编码”,请执行此操作;写C:\program files\....\javac,或SET JAVA_LOC=...​​然后%JAVALOC%\javac。但是,这显然是不需要的;你搞砸了你的 SET PATH 语句,但 javac 正在被调用,所以,你可能应该删除整个 'set path' 行。

问题是类路径。有一个名为 DirectBuffer.class 的文件。它在某个地方 - 你说'它在 eclipse 中工作',这意味着 eclipse 可以找到这个文件,因为你告诉它它在哪里。你需要告诉 javac 它在哪里。您可以按如下方式执行此操作:

javac -cp LOC1;LOC2;LOC3 FileHandjava

java -cp .;LOC1;LOC2;LOC3 FileHand DirectBuffer 1024 Sample.txt

LOC1路径在哪里。它可以是目录,也可以是 jar 文件。您的问题并不清楚,但是让我们在源文件中说DirectBuffer' is in the com.foo.pkg package (so, you haveimport com.foo.pkg.DirectBuffer;`),然后:

任何一个:

cd (whatever you put for LOC1)
cd com\foo\pkg
dir

应该打印,除其他外,'DirectBuffer.class',或者,如果 LOC1 是一个 jar 文件:

jar tvf (the jar file listed in LOC1)

应该打印com/foo/pkg/DirectBuffer.class,除其他外。你已经告诉过 eclipse 了,所以现在找到你做过的那些地方,然后告诉 javac。


推荐阅读