我正在构建一个需要在其核心使用独立JAR文件的Web应用程序。本质上,我有一个打包为JAR文件的应用程序模块,我可以使用类似java -jar myapp.jar
之类的命令在命令提示符下成功运行,并且可以根据需要传递一些其他参数(基本上是要处理的文件名)。此JAR对其他JAR文件具有一些依赖性,这些文件位于与myapp.jar
文件位于同一文件夹中的libs文件夹中。所有这些都可以作为通过命令提示符执行的独立JAR文件。
现在,我需要在Web应用程序中使用此JAR并执行相同类型的处理。我已经有一个基于Grails的Web应用程序设置,其中包含所需的UI等,我已经在Grails Web应用程序的lib
文件夹中添加了所有必需的JAR库。我已将myapp.jar
文件放在同一个lib文件夹中。
我对如何通过我的Web应用程序的Controller方法运行此myapp.jar
文件感到有些困惑?基本上,我在我的Web应用程序中有一个表单,用户可以在其中指定myapp.jar
需要处理的所需文件路径,然后用户单击“运行/提交”按钮。之后,我需要使用提供的文件路径参数启动myapp.jar
,并将生成/处理的文件放在指定的位置。
因此,基本上通过Web应用程序的控制器方法在命令提示符下执行类似于独立JAR执行的处理。
有人可以指导我完成这项工作的正确程序吗?
非常感谢这方面的任何帮助。
答案 0 :(得分:3)
如果查看MANIFEST.MF
文件中/META-INF/
目录中的myapp.jar
,您应该找到Main-Class
属性。例如,如果主要类是com.example.MyApp
,您应该可以从代码中调用它的静态主方法(即,从您的Grails Controller方法)。
String[] args = new String[] { '/path/inputFile', '/path/outputFile' }
com.example.MyApp.main(args)
// do something with output file
如果您有权访问myapp.jar
的来源,那么最好还是查看main
的内容,然后直接使用API。