如何从类中运行jar文件?

时间:2013-07-06 13:22:20

标签: java command-line jar

我想使用以下命令运行程序

java Main -host arg1 arg2

然而,由于我在单独的包装中制作了这个项目,所以我遇到了一些问题。所以我得到一个jar文件,无法从上面的关键字运行main。我必须从命令行调用jar文件。

java -jar Main.jar arg1 arg2

但是我不希望这样,因为它违反了我的规范。

你能帮我吗?

SPECIFICATION

只需要纯文本应用程序。它必须联网并作为主机(服务器)或a运行 客户端从命令行使用命令:

java BankApp -host PORT
java BankApp -client MACHINE PORT

分别作为主机或客户端启动。例如,如果您知道主机在端口8888上运行aloha 你会联系:

java BankApp -client aloha 8888

我需要做的就是如下。

java -jar C:\Users\UniversityofBristol\Desktop\BankApp\BankApp\dist BankApp.jar arg1 arg2

公共类BankApp {

public static void main(String[] args) throws IOException, ClassNotFoundException {


    String current = new java.io.File(".").getCanonicalPath();
    current = "java -jar " + current + "\\dist";
    current = "\"" + current + "\"";
    current = current + " BankApp.jar";
    System.out.println("Current dir:" + current);

    // Run a java app in a separate system process
    Process proc = Runtime.getRuntime().exec(current);
    // Then retreive the process output
    InputStream in = proc.getInputStream();
    InputStream err = proc.getErrorStream();

}

}

2 个答案:

答案 0 :(得分:1)

如果您想在单独的流程中运行.jar,请参阅this answer

否则我认为您可以将它添加到您的项目中(在您正在使用的任何IDE中查看项目属性)并将其用作任何其他库。

答案 1 :(得分:0)

把你的jar放在classpath上。您可以通过说:

来打破规范
java -cp bankapp.jar BankApp arg1 arg2

或设置$ CLASSPATH环境变量(这很丑陋,我从来没有真正在脚本之外执行它但它有效):

export CLASSPATH=path/to/your/jar
java BankApp arg1 arg2

<强>扰流