【发布时间】:2013-04-18 05:22:00
【问题描述】:
假设我有一个 String 包含 .java 文件的内容。是否有任何 API 可以让我将此源文件编译成虚拟的 .class 文件(即在内存中生成和存储内容,而不是在磁盘上创建实际的物理 .class 文件)?然后这个“虚拟”.class 会在 JVM 中加载并执行?
编辑 1:我想这样做的唯一原因是因为有时我的应用程序可能没有写权限。
【问题讨论】:
-
可能不会,但您可以(至少在 Linux 上)在无磁盘文件系统(例如
tmpfs)上创建该文件,这几乎与在内存上工作一样快。也许你可以写自己的ClassLoader -
“我的应用程序可能没有写权限。” 是因为它被 Java 沙盒化,还是 DYM OS 安全设置?
-
@AndrewThompson 两者。它可能被 Java 沙盒化,因为我的应用程序将从 Internet 下载。由操作系统,因为用户可能决定将 jar 文件(我的应用程序)放在某个目录中,例如 Windows 中的 C:\。
-
“从互联网上下载的。” 所以你的意思是小程序或 JWS 应用程序。? AFAIU,它们是唯一 Java 提供
SecurityManager的。 -
对不起,我误读了你的问题。不,它是一个桌面应用程序,因此写入权限仅由操作系统设置引起。
标签: java compilation javac .class-file