我是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,我必须按原样并使用命令行参数来运行它。
请指教。
一个想法:您将命令行的默认标记化为complete String,并且它没有像您期望的那样解析最后一个。相反,您应该String[]在自己切掉命令行后使用带a的此方法的形式:
String
String[]
http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String [])
或者,它正在等待您的输入,或者正在等待您读取其输出。这可以解释挂起。在Internet上搜索流和Runtime.exec()。
Runtime.exec()
考虑ProcessBuilder代替。
ProcessBuilder