gpt4 book ai didi

java - 从 java 命令行发送参数

转载 作者:行者123 更新时间:2023-12-01 12:00:25 25 4
gpt4 key购买 nike

我对java比较陌生,想生成一个程序,根据我提供的命令行参数从pdf中读取文本。在此示例中,我想传递文件 document.pdf(与我的 jar 文件位于同一目录中)。我还尝试使用/home/myname/Desktop/document.pdf 从桌面发送文件(以查看这是否是相对/绝对路径问题)。我继续收到文件未找到错误。我认为通过以下调用我将文件路径作为 args[0] 发送到程序..

java -jar fileRead.jar fileRead document.pdf

---or---

java -jar filereadjar fileRead /home/myname/Desktop/document.pdf

如果我在程序中将 filesInputStream(args[0]); 替换为 filesInputStream("/home/myname/Desktop/document.pdf"); ,所有进展顺利。那么为什么路径没有从命令行发送到 filesInputStream 呢?

谢谢。

package fileRead;

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.PrintWriter;


import org.apache.tika.parser.pdf.PDFParser;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.ContentHandler;

public class fileRead {

public static void main(String args[]) throws Exception {

InputStream is = null;
try {
is = new FileInputStream(args[0]);
ContentHandler contenthandler = new BodyContentHandler(-1);
Metadata metadata = new Metadata();
PDFParser pdfparser = new PDFParser();
pdfparser.parse(is, contenthandler, metadata, new ParseContext());

PrintWriter writer = new PrintWriter("/home/marek/Downloads/the-file-name.txt", "UTF-8");
writer.println(contenthandler.toString());
writer.close();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (is != null) is.close();
}
}

}

最佳答案

那么正式回答:

java -jar <jarname> <args...>将调用可执行 JAR 的主类。

java -cp <jarname> <classname> <args...>将调用 JAR 的指定类(不一定是可执行的)。

如果你把类名放在第一个语法中,它实际上成为第一个参数,所以你的 args由于无用 fileRead ,数组被移动了一个位置参数进入竞争。

关于java - 从 java 命令行发送参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28017053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com