`
guoxinzz
  • 浏览: 431848 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JavaCompiler使用例子

 
阅读更多

package com.test;

import java.io.IOException;
import java.lang.reflect.Method;
import java.net.URI;
import java.util.Arrays;

import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.SimpleJavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;

public class CompileString {
public static void main(String[] args) throws Exception {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
System.out.println(""+ToolProvider.getSystemJavaCompiler());
StandardJavaFileManager fileManager = compiler.getStandardFileManager(
null, null, null);

StringObject so = new StringObject(
"CalculatorTest",
"class CalculatorTest {"
+ " public int multiply(int multiplicand, int multiplier) {"
+ " System.out.println(multiplicand);"
+ " System.out.println(multiplier);"
+ " return multiplicand * multiplier;" + " }" + "}");

JavaFileObject file = so;

Iterable files = Arrays.asList(file);
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager,
null, null, null, files);

Boolean result = task.call();
System.out.println(result);
if (result) {
Class clazz = Class.forName("CalculatorTest");

Object instance = clazz.newInstance();

Method m = clazz.getMethod("multiply", new Class[] { int.class,
int.class });

Object[] o = new Object[] { 3, 2 };
System.out.println(m.invoke(instance, o));
}
}
}

class StringObject extends SimpleJavaFileObject {
private String contents = null;

public StringObject(String className, String contents) throws Exception {
super(URI.create("string:///" + className.replace('.', '/')
+ Kind.SOURCE.extension), Kind.SOURCE);
this.contents = contents;
}

public CharSequence getCharContent(boolean ignoreEncodingErrors)
throws IOException {
return contents;
}
}

分享到:
评论

相关推荐

    Simple-Memory-Compiler:易于使用的无文件Java编译器

    这是javax.tools.JavaCompiler的基本包装。 这样,您将需要在JDK下运行它。 JRE不包含编译器。 对于Java 8,可以在tools.jar找到它。 对于Java 9+,可以在模块java.compiler找到。 产品特点 支持多个源文件/类 可...

    codekrypt-compiler:学习Java的编译器内部知识。还包括AST,JDT,ANTLR,JavaParser示例

    Codekrypt编译器 此回购包含子模块,可帮助我更好地了解编译器。 项目模块 ... Javaparser示例 JDT示例 故障排除 如果ANTLR Examples子模块中的项目失败,请首先使用构建该项目。 mvn clean install

    Java-Runtime-Compiler:Java运行时编译器

    Java运行时编译器 这将获取一个String,对其进行编译并加载它,从而从您所构建的内容中返回一个类。 默认情况下,它使用当前的ClassLoader。 它支持嵌套类,否则一次构建一个类。在Maven Central 您可以在项目中加入...

    JavaScriptPP-JavaCompiler:一个将 js++ 代码编译为纯 js 的 Java 小程序

    这是一个小例子: CompiledFile f = compileFile("test/test.jpp", "/Users/yss/Desktop/test.js"); System.out.println(f.getCompiledCode()); 使用过的项目: JavaScript++ ( ) org.json ( )

    java解析ASN.1文件的实例和简要使用说明

    这里是JAC 官方提供的使用JAVA解析ASN.1文件的例子, 是eclipse工程,还有使用文档(英文的)

    JDK1.6新特性与实战例子

    JDK6的新特性之一:...现在我们可以用JDK6 的Compiler API(JSR 199)去动态编译Java源文件 JDK6的新特性之五:轻量级Http Server JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,

    LangCompiler

    然后创建一个.lang文件(或使用示例之一) 例如 class HelloWorld { main { print "Hello world" } } 将此文件命名为HelloWorld.lang 编译并运行它使用 $ java Compiler HelloWorld.lang Generated class: ...

    java开源包8

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包6

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包11

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包9

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包5

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    JavaAsn1Compiler_2.0.rar

    将asn.1转化为java类,里面有详细的例子和使用说明,可以根据里面的ppt来使用,使用时通过传递args参数和asn1文件来生成

    java开源包101

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包4

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包10

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    JAVA上百实例源码以及开源项目

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    JAVA上百实例源码以及开源项目源代码

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    java开源包3

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    1.5.2 Java编译器(Java Compiler) 17 1.5.3 Java类库(Java Class Libraries) 17 1.5.4 Java虚拟机(Java Virtual Machine) 17 1.5.5 HelloWorld的整个流程 17 1.6 小结:我们学会了编译和运行一个Java程序...

Global site tag (gtag.js) - Google Analytics