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中取出。

+1

右做,什么是自己真正要做的问题在这里解决?为什么不想在运行之前创建文件? –

+0

要制作破解者很困难,他们将不得不使用他们的内存来获取文件。 –

+1

但是该文件已经在Internet上可用。肯定是一个真正想要这个文件如此糟糕的破解者会从那里得到它? –

尝试使用URLClassLoader为您完成工作。您可以在以后找到META-INF/manifest.mffindResource(...)方法,阅读它,找出主类,find it并调用其main(...)方法,做同样的事情,你会与java -jar ...

+0

如果下载受密码保护(如前面评论中所述,OP),这项工作是否可行? –

+0

错过了有关密码的部分。将使用基于内存字节流的适当解决方案编辑答案。 –

+0

够公平的。很高兴你有它;) –