java 编译源码,在程序中编译 Java 源码

1.[代码]Compiler.java

package ex.tajti.tools;

import javax.tools.Diagnostic;

import javax.tools.DiagnosticListener;

import javax.tools.JavaCompiler;

import javax.tools.JavaFileObject;

import javax.tools.StandardJavaFileManager;

import javax.tools.ToolProvider;

/**

*

* @author ákos tajti

*/

public class Compiler {

/**

* compiles a java source file with the given fileName

*

* @param fileName

*/

public void compile(String fileName) {

/*

* the compiler will send its messages to this listener

*/

DiagnosticListener listener = new DiagnosticListener() {

public void report(Diagnostic diagnostic) {

System.err.println("gond: " + diagnostic.getMessage(null));

System.err.println("sor: " + diagnostic.getLineNumber());

System.err.println(diagnostic.getSource());

}

};

//getting the compiler object

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

StandardJavaFileManager manager = compiler.getStandardFileManager(null, null, null);

Iterable extends JavaFileObject> files = manager.getJavaFileObjects(fileName);

JavaCompiler.CompilationTask task = compiler.getTask(null, manager, listener, null, null, files);

// the compilation occures here

task.call();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值