gpt4 book ai didi

java - 在嵌入式 Tomcat 上从 Spring-Boot Web 应用程序运行 Python 脚本

转载 作者:行者123 更新时间:2023-11-29 04:21:07 24 4
gpt4 key购买 nike

我正在尝试制作一个网络应用程序,该应用程序在 Spring-boot 上使用 HTML 表单获取用户的输入(在嵌入式 Tomcat 上运行);我需要将此输入作为命令行参数传递给位于硬盘某处的 Python 脚本。

这是我的 Controller ,它从 HTML 表单中获取数据(从表单中获取数据工作正常。)

@Controller
public class PortalController {
@RequestMapping(value="")
public String hello(){
return "portal/welcome";
}
@RequestMapping(value="",method=RequestMethod.POST)
public String addAObjectForm(@RequestParam String val) throws IOException {
String cmd = "python Fetch.py \""+val+"\"";
System.out.println(cmd);
Runtime.getRuntime().exec(cmd);
return "redirect:/";
}
}

变量“cmd”最终存储了这个值:python Fetch.py​​ "Command-line-arg-from-html"

Python 代码正在抓取网络。 代码太大,无法移植到Java。而我的v. sweet 老师让我在Spring-Boot 上制作web-app。 由于该应用程序是在Tomcat 上运行的,因此我似乎无法像直接执行Py 脚本一样它在控制台上。有人可以建议一种方法吗?非常感谢任何一点帮助。

注意:Spring-Boot 项目和 Python 脚本都可以独立运行,没有任何问题。

我遇到的问题是,代码只是在控制台上打印变量“cmd”并继续。数据库中没有反射(reflect)任何更改(应该由 Py 脚本完成),这表明脚本没有执行。这是控制台窗口:

2018-03-03 05:44:47.733  INFO 10752 --- [  restartedMain] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2018-03-03 05:44:47.771 INFO 10752 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2018-03-03 05:44:47.771 INFO 10752 --- [ restartedMain] org.OpenLyrics.Portal.PortalApplication : Started PortalApplication in 3.161 seconds (JVM running for 7.414)
2018-03-03 05:44:55.737 INFO 10752 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2018-03-03 05:44:55.738 INFO 10752 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2018-03-03 05:44:55.765 INFO 10752 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 26 ms
python Fetch.py "Argument 1"
python Fetch.py "Argument 2"
python Fetch.py "Argument 3"

最佳答案

我在互联网上搜索了很多东西并找到了解决方案。

可以使用以下命令执行此操作:

String fetching = "python " + "c:\\Fetch.py \"" + songDetails + "\"";
String[] commandToExecute = new String[]{"cmd.exe", "/c", fetching};
Runtime.getRuntime().exec(commandToExecute);

关于java - 在嵌入式 Tomcat 上从 Spring-Boot Web 应用程序运行 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49105473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com