0

我一直在尝试执行 jar 文件。我首先学会了如何通过 cmd 执行它们,而且我做得很好。现在,我目前正在尝试从我一直在编写的 Java 代码中运行 jar 文件。jar 位于我的机器中,我通过 jar 代码运行 jar,如下所示:

Runtime r = Runtime.getRuntime();
Process p = null;
p = r.exec(new String[] { "cmd", "/c", "start C:\\jartest\\JavaApplication.jar" });

这在我的机器上非常有效。JavaApplication.jar 的输出是它创建了一个文件夹并实现了输出。

当我想通过 Servlet 从我的机器运行位于 Raspberry PI 的 Jar 文件时,就会出现问题。代码如下所示:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    QLM qlm = new QLM();
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
        out.println("Response of Servlet Content Started \n");
        String message= request.getParameter("msg");
        out.println(message);
        if((qlm.get_Envelop(message))!= null){
            out.println("DATA IS VALID");
        } else out.println("WRONG MESSAGE!!");
        out.println("Response of Servlet Content end \n");

        **Runtime r = Runtime.getRuntime();
        out.println("Am I here??");
        r.exec(new String[] {"cmd","/c", "start /home/pi/JARTest/JavaApplication24.jar", "file1" });**
        out.println("Did it work??");

    } finally {            
        out.close();
    }
}

它与我机器上的 jar 文件相同。我通过 WinSCP 在 PI 上放置/存储 JavaApplication.jar。jar 位于树莓派上的路径是:/home/pi/JARTest。我将命令行参数作为“file1”传递给 Jar 文件。servlet 的其他操作也可以正常工作,除了运行 Jar 文件。

PS- jar (JavaApplication.jar) 的结果是相同的。它适用于我的机器(Windows),但它根本不想接受相同的 jar 文件和相同的命令 Runtime r = Runtime.getRuntime(); 在树莓派上。

请帮我解决一下这个。任何输入/建议/想法将不胜感激。

提前致谢。

4

1 回答 1

1
 r.exec(new String[] {
    "cmd","/c", "start /home/pi/JARTest/JavaApplication24.jar", "file1" });

那是Windows代码。它调用“cmd”,即 Windows 命令外壳。所以这在其他操作系统上不起作用(比如你的 Pi 上的 Linux)。

尝试使用“java”命令重写它

于 2013-08-02T10:22:04.453 回答