Java 如何从类内部运行jar文件?

Java 如何从类内部运行jar文件?,java,command-line,jar,Java,Command Line,Jar,我想使用以下命令运行一个程序 java Main -host arg1 arg2 然而,我面临着一些困难,因为我在单独的包中完成了这个项目。因此,我得到一个jar文件,无法从上面的关键字运行main。因此,我必须从命令行调用jar文件 java -jar Main.jar arg1 arg2 然而,我不希望这样,因为它违背了我的规范 你能帮我吗 规格 只需要一个文本应用程序。它必须联网并作为主机(服务器)或服务器运行 使用以下命令从命令行访问客户端: java BankApp -host P

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

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

}

}

只需将jar放在类路径上。你可以稍微打破规范,说:

java -cp bankapp.jar BankApp arg1 arg2
或者设置$CLASSPATH环境变量(这个变量很难看,我从来没有在脚本之外执行过,但它可以工作):

扰流板

查看是否要在单独的进程中运行.jar


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

如果我知道您的规范,我可以提供帮助!嗨,我刚上传了说明书@AdityaSaxena-看看,javaDoc有一个关于如何启动流程的好例子。请注意,可执行文件和参数都在单独的字符串中!谢谢但我不需要添加任何传统的论点。我尝试创建一个虚拟的BankApp类,并尝试从中调用jar文件。-不允许使用cp BankApp.jar。我看到了。它必须是javabankapp-host arg1 arg2…然后使用第二种方法(定义CLASSPATH变量)。你的规范真的那么严格以至于你不能添加java虚拟机选项吗?试试看!谢谢,如果它能工作,我会在一段时间内发送一条消息。我需要读一下。线程“main”java.lang.IllegalArgumentException中的异常:可执行文件名包含嵌入的引号,拆分参数
export CLASSPATH=path/to/your/jar
java BankApp arg1 arg2