Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JSP页面中运行.jar文件_Java_Jsp_Jar - Fatal编程技术网

Java 在JSP页面中运行.jar文件

Java 在JSP页面中运行.jar文件,java,jsp,jar,Java,Jsp,Jar,我正在尝试开发一个网站,它接受用户输入并转换成文本文件。然后将文本文件用作.jar文件的输入。(例如,java-jar encoder.jar-i text.txt),jar然后输出一个.bin文件供用户下载 这个jar设计为从命令行运行,我真的不知道在.jsp页面中实现它的最佳方法。我已经创建了一些java测试类,但到目前为止还没有成功 有人对可能的方法有什么建议吗?你试过这样的方法吗 创建一个java文件 使用ProcessBuilder并启动新的JVM 以下是一些让您开始学习的内容: Pr

我正在尝试开发一个网站,它接受用户输入并转换成文本文件。然后将文本文件用作
.jar
文件的输入。(例如,
java-jar encoder.jar-i text.txt
),jar然后输出一个
.bin
文件供用户下载

这个jar设计为从命令行运行,我真的不知道在
.jsp
页面中实现它的最佳方法。我已经创建了一些java测试类,但到目前为止还没有成功


有人对可能的方法有什么建议吗?

你试过这样的方法吗

创建一个java文件

使用
ProcessBuilder
并启动新的JVM

以下是一些让您开始学习的内容:

ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar", "thetextfile.txt");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start(); 

ps:do handle to destroy process否则它会消耗所有内存

您可以将这个jar放到类路径上的web应用程序中,并使用它的类和方法。如果没有源代码,使用javadoc会更好。但是,即使不在
类路径中,您也可以尝试or。

将其作为外部进程运行的替代方法是在当前JVM中调用其主类:

  • jar的Extract/open
    META-INF/MANIFEST.MF
  • 确定问题所在。假设它被称为
    EncoderMainClass
  • 调用其
    main
    方法:
    EncoderMainClass.main(“-i”,“text.txt”)

  • 这可能更快,因为不需要创建新的操作系统进程,但可能需要考虑安全问题

    您最好将jar加载到您的站点并在进程中运行它——您可能只需要替换主类。你有.jar的源代码吗?如果没有,您可以尝试反编译主类,看看这有多复杂。您可能需要注意代码是否正确地释放了所有资源,也就是说,它不只是假设终止时所有资源都会自动释放,因为如果您从JVM中调用自己,那么它运行的JVM就不会终止。或者你可能会发现一个不同的实现-编码是什么?谢谢你,这是一个有趣的想法,我没有想到。基本上,我使用的.jar文件不是我自己的,所以我不确定它的编码。它用于将文本文件转换为十六进制,这样就可以由一块硬件进行解释。稍后我将尝试反编译.jar文件,看看这是否是一种可行的方法。同时,如果任何其他人有任何想法,他们都会受到欢迎……这非常有效,成功地通过主类传入参数并生成.bin文件。关于安全考虑,您的确切意思是,用户是否可以尝试某种形式的溢出?谢谢你的帮助。请仔细阅读。该类在应用程序服务器上下文中运行的命令行v/s上运行时,将应用不同的安全策略。既然它起作用了,我想你应该没事。