使用可传递参数导出jar文件

时间:2014-02-10 17:58:48

标签: java eclipse jar args

我试图通过eclipse导出java程序,但我遇到了一些问题:

我希望能够通过命令行运行它并将参数传递给它,特别是属性文件的位置。

我尝试使用main作为启动配置将其导出为可运行的jar文件,并使用另一个运行配置,其中参数在运行时传递。

public static String currentStatus;
public static String filename = "etc/ryanair.properties";   
public boolean isDuplicate = true;

public static void main(String args[]) throws IOException {
    String file = args[0];
    Properties config = new Properties();       
    config.load(new FileInputStream(file));

    System.out.println("====================BEGIN=======================");
    HtmlParser htmlparse = new HtmlParser(config);

    List<String> list = htmlparse.parse();  

    debug(list);    

基本上我想传递属性文件的位置,即etc/ryanair.properties,但我一直收到以下错误:

Exception in thread "main" java.io.FileNotFoundException: 
           etc/ryanair.properties (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at com.beezer.twitter.traffic.Main.main(Main.java:17)

有趣的是,如果我使用变量filename而不是file,我不需要传递参数,我会收到相同的错误。

我可以在eclipse中运行它们,无论是将文件位置作为固定变量,还是通过运行配置传入,而不是通过命令行传递。

etc文件夹位于eclipse中src文件夹的子目录中。

有谁能看到我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

在您的代码中,它将在etc /文件夹中查找文件ryanair.properties。此etc文件夹应位于当前路径中,而不是.jar的文件夹

也许您想在.jar文件中创建属性文件,您应该将属性文件作为资源文件(在eclipse中,右键单击文件,构建路径 - > gt;添加到构建路径),然后使用HtmlParser.class.getResource("/ryanair.properties").getPath()获取文件名。注意资源的根路径。

关于当前路径,这是当前路径?在linux中,您可以使用pwd,在Windows中,您可以使用echo %cd%