Java 如何从servlet执行python脚本?

Java 如何从servlet执行python脚本?,java,python,servlets,Java,Python,Servlets,我为servlet编写了以下代码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpSe

我为servlet编写了以下代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Summarize extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        String str = req.getParameter("txt");

        try {
        //instead of writing just test.py, write the whole path to the python script it will work perfectly
            Process p = Runtime.getRuntime().exec("python test.py");
            p.waitFor();
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    p.getInputStream()));
            StringBuffer buf = new StringBuffer("");
            String line = null;
            System.out.println(p.toString());
            while ((line = in.readLine()) != null) {
                System.out.println(line);
                buf.append(line);
            }
            System.out.println(buf.length());
            out.println("this is summarize class");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
这段代码不会返回任何东西,但是如果我在一个简单的java类中编写相同的代码,那么代码工作得非常好

我还检查了python脚本,它运行得非常好。
有办法解决这个问题吗

更新:
下面的代码现在可以工作了,只需在try语句之后阅读注释即可

我建议使用

Jython是Python编程语言在Java中的一个实现,运行在Java虚拟机(JVM)上,而Python的标准实现是用C(CPython)实现的。Python开发人员可以使用它来利用Java社区可用的大量库,这意味着在应用程序中添加一些Java集成

一个例子

来源

我推荐使用

Jython是Python编程语言在Java中的一个实现,运行在Java虚拟机(JVM)上,而Python的标准实现是用C(CPython)实现的。Python开发人员可以使用它来利用Java社区可用的大量库,这意味着在应用程序中添加一些Java集成

一个例子


source

我必须在servlet doPost()方法中执行,而不是在一个包含main方法的简单类中。你可以在你的servlet中使用jython解释器或命令执行器。我只想从我的servlet运行一个python脚本并初始化输出,你能提供一个代码吗?我必须在servlet doPost()方法中执行,不是在一个有main方法的简单类中,你可以在你的servlet中使用jython解释器或命令执行器。我只想从我的servlet运行一个python脚本并初始化输出,你能提供一个代码吗?
import org.python.util.PythonInterpreter;
import org.python.core.*;

public class SimpleExample {
   public static void main(String[] args) throws PyException
   {
       PythonInterpreter pi = new PythonInterpreter();
       pi.set("integer", new PyInteger(42));
       pi.exec("square = integer*integer");
       PyInteger square = (PyInteger)pi.get("square");
       System.out.println(“square: ” + square.asInt());
   }
}