2017-07-30 37 views
-1

我正在從互聯網下載文件(How to download and save a file from Internet using Java?),但我不希望文件在運行之前被創建。所以我的想法是:我下載文件放在一個文件new File("myJar.jar");,現在而不是做Runtime.getRuntime().exec("java -jar myJar.jar"); < =(我需要創建文件...)我將解壓縮jar並獲取每個類的字節,並把他們進入Classloader運行程序。這是一個好方法,或者你會推薦什麼? Java: How to load Class stored as byte[] into the JVM? < =如果我從jar中加載每個類,它會運行程序嗎?Java - 從RAM運行文件對象

編輯: 這應該做的,使破解者很難獲取文件。

編輯2: 如果它不是一個罐子,而是一個.exe,它會怎麼樣?當我將jar編譯爲本地代碼,然後將其編譯爲.exe時,這是必需的,因此crackers無法將代碼從jvm中取出。

+1

右做,什麼是自己真正要做的問題在這裏解決?爲什麼不想在運行之前創建文件? –

+0

要製作破解者很困難,他們將不得不使用他們的內存來獲取文件。 –

+1

但是該文件已經在Internet上可用。肯定是一個真正想要這個文件如此糟糕的破解者會從那裏得到它? –

回答

0

嘗試使用URLClassLoader爲您完成工作。您可以在以後找到META-INF/manifest.mffindResource(...)方法,閱讀它,找出主類,find it並調用其main(...)方法,做同樣的事情,你會與java -jar ...

+0

如果下載受密碼保護(如前面評論中所述,OP),這項工作是否可行? –

+0

錯過了有關密碼的部分。將使用基於內存字節流的適當解決方案編輯答案。 –

+0

夠公平的。很高興你有它;) –