String 从字符串创建一个Jar?

String 从字符串创建一个Jar?,string,executable-jar,String,Executable Jar,我看到了一些关于从其他Jar文件中以编程方式创建Jar文件的有趣问题和答案。“机器制造机器”,如果你愿意的话 这在我的新手脑海中激起了一个问题:你能从一个字符串创建一个可执行的Jar文件而不首先将其输出到源文件或临时文件吗?我在谷歌上搜索了这个问题,但没有找到答案,主要是因为我不知道该去哪里找 无论如何,一个例子可能有助于解释我的问题。假设我有这样的东西: String newClass = "class testing{ \n"+ " public s

我看到了一些关于从其他Jar文件中以编程方式创建Jar文件的有趣问题和答案。“机器制造机器”,如果你愿意的话

这在我的新手脑海中激起了一个问题:你能从一个字符串创建一个可执行的Jar文件而不首先将其输出到源文件或临时文件吗?我在谷歌上搜索了这个问题,但没有找到答案,主要是因为我不知道该去哪里找

无论如何,一个例子可能有助于解释我的问题。假设我有这样的东西:

String newClass = "class testing{ \n"+
                  "    public static void main(String args[]){ \n"+
                  "        System.out.println(\"This works!\"); \n"+
                  "    } \n"+
                  "}";
我可以将其编译成一个可执行的Jar文件而不首先将其输出到.java文件或临时文件吗?然后,当我双击输出的Jar时,我会得到一个控制台窗口,上面写着“这很有效!”?(假设上面的代码中没有停顿,所以我实际上不会看到。)


基本上,我的好奇心源于我想知道人们是否可以在理论上创建程序,而源代码从未接触过他们的硬盘。我知道人们可以反编译程序什么的;不过,这似乎是一个合理的问题。例如,可能存储用户输入的密钥的解密程序;或者是一个在线购买程序的用户,该程序会在运行中向他们注册。

您可以这样做,但您需要一个外部库。看

然而,我不认为这对解密程序和类似的程序有很大的区别。解密密钥必须进入程序;它的创建者程序可能在磁盘上,或者创建者的创建者在磁盘上。如果密钥不在磁盘上或用户头部,则它必须是动态生成的,一旦断电,您将丢失解密的数据。这可能没问题;但您也可以在传统执行程序的内存中动态生成密钥

就安全性而言,还有一些内存管理技术(交换、休眠)可以模糊某些系统上内存和RAM之间的差异