使用多个参数运行Jar文件

时间:2014-04-09 08:54:47

标签: java jar intellij-idea

我正在构建一个用Java编写的JPEG编码器的优化。要做我的基准测试,我想将原始代码和优化代码提取到单独的jar中。每个jar都必须有两个参数。第一个用于文件名,第一个用于重复压缩jpeg。

public static void main(String[] args) {
    String filepath = args[0];
    try {
        int times = Integer.getInteger(args[1]);
        runBenchmark(filepath, times);
    } catch(IOException | NumberFormatException ioe) {
        System.out.println("Your arguments are Wrong! Use the follow order!");
        System.out.println("1. Argument must be the filename of the image.");
        System.out.println("2. Argument must be a number to repeat the compression.");
    }
}

这是我的主人,女巫处理我的args。我无法在IntellJ上运行参数。即使我把它编译成jar,我也无法通过我的arg2。 enter image description here

我通过intellj中的配置传递了两个参数,我得到一个NullPointerException。所以我试图弄清楚我的java是否可以采用两个参数。我在vim中编写了一个简单的main,并使用两个args编译运行它。我在intellj的一个新项目中重复了这个。enter image description here 这很有效。但为什么呢?

2 个答案:

答案 0 :(得分:2)

您必须检查参数是否为int。 使用Integer.parseInt()和try-catch块通知用户是否发生了故障。

int times = 0;
try {
  times = Integer.parseInt(args[1]);
} catch (Exception e) {
  System.out.println("failure with a parameter");
}

答案 1 :(得分:2)

我将方法更改为Integer.parseInt(string),现在它可以工作了。它是Integer.getInt()。我以为我现在有2. arg因为我得到了NullPointerException。 现在它可以使用这段代码了。

public static void main(String[] args) {
    try {
        String filepath = args[0];
        int times = Integer.parseInt(args[1]);
        runBenchmark(filepath, times);
    } catch (NumberFormatException nfe) {
        System.out.println("2. Arg must be an number");
    } catch (IOException ioe) {
        System.out.println("File not found.");
    } catch(Exception e) {
        System.out.println("Your arguments are Wrong! Use the follow order!");
        System.out.println("1. Argument must be the filename of the image.");
        System.out.println("2. Argument must be a number to repeat the compression.");
    }
}