我不想创建一个包含 Java 编译器并且能够从网络(或从文本字段)下载和编译 .java 文件的小程序。 据我了解,Java编译器是基于Java的,所以这应该是可能的。 然而,我想知道的一件事是 Java 编译器是否能够将类文件存储在内存中,或者它需要显式的磁盘访问。 另外,我想捕获 javac 产生的错误,但这是自然的。
也许某个地方有关于此的文章?我找不到太多关于这个案子的信息。我会遇到什么麻烦?
编辑:我计划将小程序与 OpenCL 一起使用,因此我必须对该小程序进行签名。
编辑:这里有类似的问题:在小程序或 Google AppEngine 中托管 Java 编译器?
Java编译器一直在你身边。您应该使用
java.lang.Compiler
类。但我相信您会遇到 SecurityManager 的问题。
如果我是你,我更愿意在服务器端编译代码。这意味着我将开发能够获取 java 源代码并编译它的 servlet。生成的 java 类应该可以通过 HTTP 在配置为可由小程序访问的路径下使用,因此您的小程序将能够在编译后运行此类。
来自SSCCE 基于文本的编译器的文档:
。javax.tools.ToolProvider
的文档提到它返回“该平台提供的编译器或getSystemJavaCompiler()
如果没有提供编译器”,但没有明确说明为什么它可能为空,也没有说明编译器不会可用于小程序 或 Webstart 应用程序。null