我已经找了几个小时了,没有找到任何关于这件事的东西。
我有一个jarinputstream,它读取一个加密的jar并解密它。
JarInputStream jin = new JarInputStream(new CipherInputStream(in, dcipher));我得到了确认,因为当我这样做时,它会打印出类名。
while ((je = jin.getNextJarEntry()) != null) {
jename = je.getName();如果我打印出jename,它将打印出类名和路径,所以我知道它可以很好地解密。
但是现在,当我想运行Main.class的时候,我完全不知道该怎么做。我不想把文件保存到磁盘上,只想把它保存在内存中。
关于如何在内存中从jarinputstream创建和运行jar,有什么建议吗?
谢谢!
发布于 2013-02-07 22:12:39
您需要子类化ClassLoader并实现findClass(),以获得给定类的解密数据并将其发送到super.defineClass()。
请参阅ClassLoader文档,或者您可以从the JarClassLoader tutorial、http://www.javaworld.com/javaworld/javaqa/2003-05/01-qa-0509-jcrypt.html?page=2或Loading Encrypted JarFile Via URLCassloader获得一些灵感
https://stackoverflow.com/questions/11656095
复制相似问题