Tag: jsr199

JDK 1.6的JavaCompiler:如何将类字节直接写入byte 数组?

所以我最近了解了JDK 1.6中提供的新JavaCompiler API 。 这使得直接从运行代码将String编译为.class文件变得非常简单: String className = “Foo”; String sourceCode = “…”; JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); List unitsToCompile = new ArrayList() {{ add(new JavaSourceFromString(className, sourceCode)); }}; StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); compiler.getTask(null, fileManager, null, null, null, unitsToCompile).call(); fileManager.close(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); FileInputStream fis = new FileInputStream(className + “.class”); IOUtils.copyStream(fis, bos); return […]

javax.tools是否依赖于JDK?

我想使用JavaCompiler动态创建一些类。 我找到了javax.tools包的源代码,但是没有实现; 互联网上的一些post说它取决于tools.jar ,我不确定tools.jar与JRE联系。 那么,我可以在没有安装JDK的JRE环境中运行程序吗? 另一个问题是, JavaCompiler的实现细节是什么,它是否创建了一个调用javac命令的新进程? 谢谢