我从Eclipse项目构建了一个可运行的JAR,它处理给定的XML文件并提取纯文本。但是,此版本要求在代码中对文件进行硬编码。
有没有办法做这样的事情
java -jar wiki2txt enwiki-20111007-pages-articles.xml
让jar在xml文件上执行吗?
我已经做了一些环顾四周,所有给出的例子都与在命令行上编译JAR有关,而且没有一个涉及传入参数。
答案 0 :(得分:34)
为什么不呢?
只需修改你的Main-Class
以接收参数并根据参数采取行动。
public class wiki2txt {
public static void main(String[] args) {
String fileName = args[0];
// Use FileInputStream, BufferedReader etc here.
}
}
在命令行中指定完整路径。
java -jar wiki2txt /home/bla/enwiki-....xml
答案 1 :(得分:28)
您还可以在命令行上设置Java属性,即环境变量,并在代码中的任何位置轻松使用它。
命令行将以这种方式完成:
C:/> java -jar -Dmyvar = enwiki-20111007-pages-articles.xml wiki2txt
并且java代码访问这样的值:
String context = System.getProperty("myvar");
请参阅有关argument passing in Java的问题。
答案 2 :(得分:4)
您可以在命令行上传递程序参数,并在Java应用程序中获取它们,如下所示:
public static void main(String[] args) {
String pathToXml = args[0];
....
}
或者,您可以通过将命令行更改为:
来传递系统属性 java -Dpath-to-xml=enwiki-20111007-pages-articles.xml -jar wiki2txt
和你的主要课程:
public static void main(String[] args) {
String pathToXml = System.getProperty("path-to-xml");
....
}
答案 3 :(得分:0)
当您以这种方式运行应用程序时,java excecutable会读取jar中的MANIFEST并找到您定义的主类。在这个类中,您有一个名为main的静态方法。在此方法中,您可以使用命令行参数。