我正在嘗試開發一個接受用戶輸入並轉換爲文本文件的網站。該文本文件然後用作.jar
文件的輸入。 (例如java -jar encoder.jar -i text.txt
),那麼jar會輸出一個.bin
文件供用戶下載。在JSP頁面中運行.jar文件
這個jar被設計爲從命令行運行,我真的不知道在.jsp
頁面內實現它的最佳方式。我創建了一些java測試類,但目前爲止還沒有任何工作。
有沒有人對可能的方法有任何建議?
我正在嘗試開發一個接受用戶輸入並轉換爲文本文件的網站。該文本文件然後用作.jar
文件的輸入。 (例如java -jar encoder.jar -i text.txt
),那麼jar會輸出一個.bin
文件供用戶下載。在JSP頁面中運行.jar文件
這個jar被設計爲從命令行運行,我真的不知道在.jsp
頁面內實現它的最佳方式。我創建了一些java測試類,但目前爲止還沒有任何工作。
有沒有人對可能的方法有任何建議?
運行它作爲一個外部進程的替代方法是調用在當前JVM其主類:
Main-Class:
META-INF/MANIFEST.MF
的。說它是所謂的EncoderMainClass
main
方法:EncoderMainClass.main("-i", "text.txt")
這有啥可更快,因爲一個新的操作系統過程中不需要被創建,但可能有安全方面的考慮。
這工作完美,設法通過主類傳遞參數並生成.bin文件。出於安全考慮,您的意思是什麼,用戶是否可以嘗試某種形式的溢出?謝謝你的幫助。 – Bam421
請閱讀[SecurityManager](http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/SecurityManager.html)。當在運行在應用服務器上下文中的命令行v/s上運行時,該類將應用不同的安全策略。既然它在工作,我猜你應該沒問題。 –
您是否嘗試過somrthing這樣,
新建一個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:做處理銷燬進程否則它會吃掉所有的內存
你可以把這個罐子到Web應用程序的類路徑並使用它的類和方法。如果您沒有源,請更好地使用javadoc。但即使不在classpath
中,您也可以嘗試example或this example。
您最好的選擇可能是將jar加載到您的網站並在流程中運行 - 您可能只需要替換主類。你有.jar的源代碼嗎?如果沒有,你可以嘗試反編譯主類,看看這是多麼複雜。您可能需要小心,即代碼正確釋放所有資源,即它不會假定所有內容都會在終止時自動釋放,因爲如果您從JVM調用自己,那麼它所運行的JVM將不會終止。或者,你可能會找到一個不同的實現 - 編碼是什麼? – Rup
謝謝你,這是一個有趣的想法,我沒有想到這一點。基本上我使用的.jar文件不是我自己的,所以我不知道它的編碼。它用於將文本文件轉換爲十六進制,因此可以通過一個硬件來解釋。我會稍後嘗試反編譯.jar文件,看看這是否是一種可行的方法。同時,如果任何人有任何想法,他們是受歡迎的... – Bam421