将命令行参数传递给runnable JAR

我从Eclipse项目构建了一个可运行的JAR,它处理给定的XML文件并提取纯文本。 但是,此版本要求在代码中对文件进行硬编码。

有没有办法做这样的事情

java -jar wiki2txt enwiki-20111007-pages-articles.xml 

并在xml文件上执行jar?

我已经做了一些环顾四周,所有给出的例子都与在命令行上编译JAR有关,而且没有一个涉及传入参数。

为什么不 ?

只需修改您的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 

您还可以在命令行上设置Java属性(即环境变量),并在代码中的任何位置轻松使用它。

命令行将以这种方式完成:

c:/> java -jar -Dmyvar = enwiki-20111007-pages-articles.xml wiki2txt

并且java代码访问这样的值:

 String context = System.getProperty("myvar"); 

请参阅有关Java中参数传递的问题。

您可以在命令行上传递程序参数,并在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"); .... } 

当您以这种方式运行应用程序时,java excecutable会读取jar中的MANIFEST并找到您定义的主类。 在这个类中,你有一个名为main的静态方法。 在此方法中,您可以使用命令行参数。