java - 批处理文件显示无法找到或加载主类

标签 java parsing batch-file drag-and-drop

简单来说 - 我用 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/

相关文章:

java - BufferedWriter - 未知来源异常

parsing - 为什么语义分析中需要属性语法?

windows - 如何以编程方式更改 .bat 文件的图标?

java - 这个java方法对按位运算有什么作用?

java - 如何告诉 IntelliJ 在 OSX 上使用 brew 安装的 groovy

java - 在 JFrame MessageBox 中给出计算结果

python程序读取json文件中的特定字段输出错误

batch-file - 批处理文件:暂停后重启?

c++ - 执行批处理文件C++的函数

java - mvn编译错误: error reading jar error in opening zip file