2013-02-25 70 views
0

我曾經看到過兩個題目相同的問題,但他們都沒有回答我的問題。 How to load a jar from an URL without downloading it?
Get files from Jar which is on the repository without downloading the whole Jar from Java在另一臺機器上從一個罐子里加載一個班級,而無需下載整個罐子

我,在一個小程序,想從一個JAR文件下載類的服務器內,但沒有下載整個JAR文件。 這可能嗎?

+0

這將取決於。你有沒有權利閱讀Jar並從Applet中執行類加載。該類將需要下載並加載到客戶端。下載意味着將類字節加載到內存中,但您需要具有相應的安全權限才能執行此操作。 – MadProgrammer 2013-02-25 23:47:34

+0

JAR文件實際上是帶有一些額外規則(首先顯示等)的ZIP文件格式。因此,您可以下載中心目錄,本地頭文件和類文件本身,其中包含了解JAR文件結構的代碼(可能代碼只需要真正理解ZIP)。服務器還需要支持HTTP範圍標題。我可以找到的最好的例子是在C#http://www.codeproject.com/Articles/8688/Extracting-files-from-a-remote-ZIP-archive至於在你下載文件後加載類,我不會不知道。 – Sybeus 2013-02-26 00:13:59

+0

那麼,我已經想通了這麼多...我是一個.net程序員,這個applet將用於一個jsf網站,asp.net和一個php。我想過使用一個httphandler || Action || Servlet來返回字節並在自定義類加載器中使用它們。 – 2013-02-26 03:09:41

回答

0
在applet

,想從裏面 服務器的JAR文件下載類,但不下載整個JAR文件

如果你有超過服務器代碼控制,寫一個servlet,然後用適當的查詢調用servlet以在jar中提取所需的類。類似以下內容:

http://myserver.com/myservlet?download_class=x.y.z.class&jar_file=my.jar 

該小程序將在上面的URL上調用。在服務器上,您的servlet將選擇jar文件並提取所需的類,然後將其發送(使用ServletOutputStream)到applet。

我覺得上面應該適合你。

+0

謝謝我最終選擇了這個解決方案,因爲它是最優雅的解決方案。我將在服務器的c#中創建一個存儲庫外觀,這將響應REST請求。因爲它將是普通的香草html,我可以返回一個基本的64字符串與該類的字節,供applet使用。謝謝 – 2013-02-26 18:07:12

相關問題