在Java小程序中包含Javac

问题描述 投票:0回答:2

我不想创建一个包含 Java 编译器并且能够从网络(或从文本字段)下载和编译 .java 文件的小程序。 据我了解,Java编译器是基于Java的,所以这应该是可能的。 然而,我想知道的一件事是 Java 编译器是否能够将类文件存储在内存中,或者它需要显式的磁盘访问。 另外,我想捕获 javac 产生的错误,但这是自然的。

也许某个地方有关于此的文章?我找不到太多关于这个案子的信息。我会遇到什么麻烦?

编辑:我计划将小程序与 OpenCL 一起使用,因此我必须对该小程序进行签名。

编辑:这里有类似的问题:在小程序或 Google AppEngine 中托管 Java 编译器?

java applet javac
2个回答
1
投票

Java编译器一直在你身边。您应该使用

java.lang.Compiler
类。但我相信您会遇到 SecurityManager 的问题。

如果我是你,我更愿意在服务器端编译代码。这意味着我将开发能够获取 java 源代码并编译它的 servlet。生成的 java 类应该可以通过 HTTP 在配置为可由小程序访问的路径下使用,因此您的小程序将能够在编译后运行此类。


1
投票

来自SSCCE 基于文本的编译器的文档:

  • javax.tools.ToolProvider
    getSystemJavaCompiler()
    的文档提到它返回“该平台提供的编译器或
    null
    如果没有提供编译器”
    ,但没有明确说明为什么它可能为空,也没有说明编译器不会可用于小程序 或 Webstart 应用程序。
© www.soinside.com 2019 - 2024. All rights reserved.