Java - 从RAM运行文件对象
我正在从互联网下载文件(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中取出。
尝试使用URLClassLoader
为您完成工作。您可以在以后找到META-INF/manifest.mf
与findResource(...)
方法,阅读它,找出主类,find it并调用其main(...)
方法,做同样的事情,你会与java -jar ...
如果下载受密码保护(如前面评论中所述,OP),这项工作是否可行? –
错过了有关密码的部分。将使用基于内存字节流的适当解决方案编辑答案。 –
够公平的。很高兴你有它;) –
右做,什么是自己真正要做的问题在这里解决?为什么不想在运行之前创建文件? –
要制作破解者很困难,他们将不得不使用他们的内存来获取文件。 –
但是该文件已经在Internet上可用。肯定是一个真正想要这个文件如此糟糕的破解者会从那里得到它? –