Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Javaservlet调用独立java应用程序_Java_Swing_Servlets - Fatal编程技术网

从Javaservlet调用独立java应用程序

从Javaservlet调用独立java应用程序,java,swing,servlets,Java,Swing,Servlets,我是Java新手。我一直在尝试做一些Java应用程序开发 我创建了一个独立的Java应用程序。它是一个基本的计算器应用程序,可以进行加法、减法、乘法和除法等基本运算。它是使用Java Swigs和AWT开发的 我有一个JavaServlet应用程序,它从用户那里获取两个输入(数字),然后返回结果。基本上,无论basic calculator做什么,servlet都可以对数字执行此类操作,并将结果返回给作为web浏览器的客户端。(客户端只是一个HTML文件) 我不想让servlet执行这些操作,而

我是Java新手。我一直在尝试做一些Java应用程序开发

  • 我创建了一个独立的Java应用程序。它是一个基本的计算器应用程序,可以进行加法、减法、乘法和除法等基本运算。它是使用Java Swigs和AWT开发的

  • 我有一个JavaServlet应用程序,它从用户那里获取两个输入(数字),然后返回结果。基本上,无论basic calculator做什么,servlet都可以对数字执行此类操作,并将结果返回给作为web浏览器的客户端。(客户端只是一个HTML文件)


  • 我不想让servlet执行这些操作,而是想调用(从servlet)独立应用程序来执行这些操作,并将结果返回给servlet。然后servlet将结果返回给客户机。是否可以从servlet调用独立java应用程序。如果是,有什么不同的方法?

    要调用应用程序,必须根据操作系统编写bat或sh文件。 --使用processbuilder调用该命令 --示例代码符合您的要求

    if (osname.indexOf("nux") >= 0 || osname.indexOf("nix") >= 0) 
                    {
                        //for sending  request to sh file
                        filePath = request.getSession().getServletContext().getRealPath("")+"/WEB-INF/classes/";
                        cmdList.add("sh");
                        cmdList.add("callDesktopApp.sh");
                        cmdList.add(path);
                        }
                    else
                    {
                        // for windows
                        String jrePath="";
                        String f="C:/Windows/SysWOW64";
                        if(new File(f).exists())
                        {
                            jrePath="C:\\Program Files (x86)\\Java\\jre6\\bin\\java";
                            jrePath="\""+jrePath+"\"";
                        }
                        else 
                        {
                            jrePath="C:\\Program Files\\Java\\jre6\\bin\\java";
                            jrePath="\""+jrePath+"\"";
                        }
                        filePath = request.getSession().getServletContext().getRealPath("")+"\\WEB-INF\\classes\\";
                    cmdList.add("cmd");
                        cmdList.add("/c");
                        cmdList.add("callDesktopApp.bat");
                        cmdList.add(path);
                        cmdList.add(jrePath);
                    }   
    
                    pb=new ProcessBuilder(cmdList);
    
                    pb.directory(new File(filePath));
                    process = pb.start();
    
                    //Read out dir output
                    InputStream is = process.getInputStream();
                    InputStreamReader isr = new InputStreamReader(is);
                    BufferedReader br = new BufferedReader(isr);
                    String line;
                    while ((line = br.readLine()) != null) {
                        System.out.println(line);
                    }
                    br.close();
                    is.close();
                    isr.close();
    
                }
    

    希望能对你有所帮助。

    你所描述的没有多大意义。与从servlet调用GUI应用程序进行基本计算不同,我将使用一个可以执行所有这些操作的库,并在servlet和GUI应用程序中使用该库来解决这些操作。另一方面,如果仍要执行此操作,则必须使用
    ProcessBuilder
    在服务器端调用GUI应用程序,读取结果的输出流,或者使用来操作GUI并获得结果,然后在servlet中使用它。