2

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

java Main -host arg1 arg2

然而,当我在单独的包中制作项目时,我遇到了一些麻烦。所以我得到了一个 jar 文件,无法从上面的关键字运行 main。因此,我必须从命令行调用 jar 文件。

java -jar Main.jar arg1 arg2

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

你能帮我吗?

规格

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

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();

}

}

4

2 回答 2

1

如果您想在单独的进程中运行 .jar,请参阅此答案。

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

于 2013-07-06T13:55:28.940 回答
0

只需将您的 jar 放在类路径中即可。您可以通过以下方式打破规范:

java -cp bankapp.jar BankApp arg1 arg2

或设置 $CLASSPATH 环境变量(这是丑陋的,我从来没有真正在脚本之外这样做,但它的工作原理):

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

剧透

于 2013-07-06T13:53:48.127 回答