【问题标题】:Java servlet - How to excecute a jar files inside java servletJava servlet - 如何在 java servlet 中执行 jar 文件
【发布时间】:2017-05-04 02:10:16
【问题描述】:

我想创建一个平台 (PlatA),它是一个使用 apache tomcat 的 java servlet web 应用程序。 PlatA 允许您上传和提取 jar/war 文件(也是 java servlet webapp)并将其保存到目录中。我现在的问题是在我提取 jar/war 文件后如何添加指向 Plat(A) 的链接以执行提取的 jar/war 文件

【问题讨论】:

  • 这个应用程序在做什么?你想通过从 servlet 运行它来实现什么?通常,您不会从 servlet 运行 Java 应用程序。您使用 jar 文件中的类和方法。
  • 所以我正在使用 servlet 和 tomcat 创建一个平台。该平台允许用户通过 web 表单上传和解压 Jar 文件。解压后,我希望能够执行已经上传的文件。
  • 你有没有意识到1.jar文件通常有依赖,没有这些依赖就无法运行; 2.这是一个巨大的安全风险:你执行的jar文件很可能只是删除服务器上的所有文件,或者将它们发送到其他地方,或者让你的服务器瘫痪,如果你没有非常非常严重的话沙盒?
  • 我了解安全风险,但这只是一个供我学习的项目,不会被其他任何人使用。

标签: eclipse servlets executable-jar tomcat8


【解决方案1】:

使用 java.lang.ProcessBuilder

该类用于创建操作系统进程。

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "absolute/path/of/jar");
Process p = pb.start();

【讨论】:

  • 您好,感谢您的回复。有了这段代码,是不是需要解压JAR文件的内容?
  • @qwertyayyy 即使没有阅读 javadoc,您认为这段代码的作用是什么?如果有疑问,请阅读 javadoc。那么,你得出什么结论?你在执行 java -jar NameofJarFile.jar 之前解压你的 jar 包吗?那你为什么认为你应该在这里做呢?
  • 谢谢,我还是初学者。不过谢谢你的提示。
猜你喜欢
  • 1970-01-01
  • 2012-09-17
  • 2020-03-22
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多