【问题标题】:How to run jar file from inside a class?如何从类中运行 jar 文件?
【发布时间】:2013-07-04 09:55:12
【问题描述】:

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

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

}

}

【问题讨论】:

  • 如果我知道您的规格,我可以提供帮助!
  • 嗨,我刚刚上传了规范!
  • @AdityaSaxena - 看看ProcessBuilder,javaDoc 有一个关于如何启动进程的好例子。请注意,可执行文件和参数都在单独的字符串中!

标签: java command-line jar


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    java -cp bankapp.jar BankApp arg1 arg2
    

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

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

    剧透

    【讨论】:

    • 谢谢!但我不必添加任何额外的论点。我尝试创建一个虚拟 BankApp 类并尝试从中调用 jarfile。
    • -cp bankapp.jar 是不允许的。我已经看到了。它必须是 java BankApp -host arg1 arg2...
    • 然后使用第二种方法(定义 CLASSPATH 变量)。您的规范真的严格到不允许添加 java vm 选项吗?
    • 试试吧!谢谢,如果它有效,将在一段时间内发送消息。需要阅读它。以前从未做过。
    • 线程“main”java.lang.IllegalArgumentException 中的异常:可执行文件名称已嵌入引号,拆分参数
    猜你喜欢
    • 2015-05-30
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2023-03-10
    • 2018-04-25
    • 2013-07-15
    • 2010-11-17
    相关资源
    最近更新 更多