一尘不染

Tomcat无法执行外部Java程序

jsp

我是JSP / Tomcat的新手,并且在Java方面也是一个新手。这就是我要做的-
当用户单击按钮/访问URL时,我想启动一个Java程序(带有一些命令行参数)。

我很容易做

Runtime.exec("C:\\Python27\\python.exe test.py")

要么

Runtime.exec("java -cp %CLASSPATH%;C:\\devprojects HelloWorld"

而且效果很好。其中HelloWorld.class仅打印“ HelloWorld”。

但是,当我尝试使用带有命令行参数的Java程序时,GET请求只是挂起而没有执行任何操作。我不知道要查找什么日志,或者这里可能出了什么问题。在花了两天时间尝试各种事情之后,我现在要放弃了。

Runtime.exec("java -cp %CLASSPATH%;C:\\devprojects Run --username Blah --password Foo");

Tomcat最终以哪个用户身份运行此Java程序?我可以成为管理员吗?这是在Windows 2008上,UAC是否会干扰事情?

我不能在这里修改Run.class,我必须按原样并使用命令行参数来运行它。

请指教。


阅读 318

收藏
2020-06-10

共1个答案

一尘不染

一个想法:您将命令行的默认标记化为complete
String,并且它没有像您期望的那样解析最后一个。相反,您应该String[]在自己切掉命令行后使用带a的此方法的形式:

http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String
[])

或者,它正在等待您的输入,或者正在等待您读取其输出。这可以解释挂起。在Internet上搜索流和Runtime.exec()

考虑ProcessBuilder代替。

2020-06-10