简单来说 - 我用 Java 编写了一个小型 Parser.class 并为其编写了一个执行以下命令的小型批处理脚本:java Parser "%1" 我的想法是,我想将日志文件拖放到批处理脚本上,然后将其作为参数移交给我的类。 到目前为止,如果我将日志文件放在与批处理脚本和 java 类相同的文件夹中,一切都会正常。但是,如果日志文件是例如在桌面上,我将其直接拖到另一个文件夹中的批处理文件上,我收到错误,无法找到或加载主类解析器。 知道这里可能出了什么问题吗?我希望能够将日志文件从任何位置拖到批处理中。
编辑: 这是我的批处理脚本:
@echo off&&setLocal EnableDelayedExpansion
if "%1"=="" (
echo Please drag your file onto the icon.
echo.
pause&&goto :eof)
cls
java Parser "%~1"
知道现在该怎么办吗?应使用“~”避免文件路径中的空格问题,正如我所说,当所有文件都位于同一文件夹中时,我的批处理脚本将按预期工作...
最佳答案
听起来批处理文件假设“当前工作目录”的默认类路径足够好 - 但如果当前工作目录是某个任意文件夹,则情况并非如此。
如果这只是为了方便并且类文件不会移动,您可以对类路径进行硬编码:
java -cp c:\foo\bar Parser "%1"
(其中 c:\foo\bar
是包含类文件的目录)。对于更强大的方法,您应该让它检测批处理文件的位置,但我不知道如何立即执行此操作...
一旦解决了找不到类的问题,您可能还会遇到其他评论和答案中提到的引用问题 - 但在您可以运行代码之前,没有其他问题了相关:)
关于java - 批处理文件显示无法找到或加载主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9733534/