java,在java代码中从WAR执行exe

时间:2013-06-25 10:50:19

标签: java external-process

在我的战争中,我在exe

中有WEB-INF\classes\个档案

如何在Java代码中执行此文件(如何指定此文件的路径)?

command = " ? ";
Process x = p.exec(command);

3 个答案:

答案 0 :(得分:1)

以下方法可行:

1)准备可执行文件的完整路径:

ServletContext context = getContext();
String fullPath = context.getRealPath("/WEB-INF/classes/executable");

2)像往常一样执行:

String[] cmd = { fullPath /*[...] arguments */};
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();

这是一个简化的例子;您可能还想了解有关ProcessBuilder的更多信息。

答案 1 :(得分:1)

这是个坏主意。想象一下,你的.war包装应该几乎可以在任何服务器上运行(“.war是独立平台”),你的.exe文件只针对一种架构进行编译。

最好将执行.exe作为外部程序,仅用于独立的平台独立和平台相关部分。然后在java中,您可以测试操作系统,并在此基础上运行所需的外部程序。

阅读this链接中的类似问题。

答案 2 :(得分:0)

在Web应用程序中查找文件的真实位置的最佳方法是使用ServletContext.getRealPath(请参阅http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String)

您可以从会话中访问该对象...