Java动态编译-JDK自带工具类.docxVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java动态编译-JDK自带工具类

Java动态编译-JDK自带工具类pile;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.IOException;importjava.io.OutputStream;importjava.io.PrintWriter;importjava.io.StringWriter;.URI;import .URL;.URLClassLoader;importjava.util.ArrayList;importjava.util.List;importjavax.tools.Diagnostic;importjavax.tools.DiagnosticCollector;importjavax.tools.FileObject;importjavax.tools.ForwardingJavaFileManager;importjavax.tools.JavaCompiler;importjavax.tools.JavaFileObject;importjavax.tools.JavaFileObject.Kind;importjavax.tools.SimpleJavaFileObject;importjavax.tools.StandardJavaFileManager;importjavax.tools.ToolProvider;publicclassMemoryCompiler {staticclassMemoryClassLoaderextendsURLClassLoader {MemoryClassLoader() {super(new URL[0]);}public Class? defineMemoryClass(String name, byte[] b) {returnsuper.defineClass(name, b, 0, b.length);}}publicstaticvoid main(String[] args) throwsInstantiationException,IllegalAccessException {StringWritersw = newStringWriter();PrintWriterpw = newPrintWriter(sw);pw.println(public class A{);pw.println(public String toString(){);pw.println(return \Test\;);pw.println(});pw.println(});Class? c = getInstance().compile(A, sw.toString());System.out.println(c);Object o = c.newInstance();System.out.println(o);}privatestaticMemoryCompilerinstance = newMemoryCompiler();privateMemoryClassLoaderclassloader = newMemoryClassLoader();private String classpath = System.getProperty(java.class.path);private String encoding = System.getProperty(file.encoding);publicstaticMemoryCompilergetInstance() {returninstance;}privateMemoryCompiler() {ClassLoadercl = MemoryClassLoader.class.getClassLoader();if (clinstanceofURLClassLoader) {StringBuildersb = newStringBuilder();for (URL url : ((URLClassLoader) cl).getURLs()) {String p = url.getFile();sb.append(p).append(File.pathSeparator);}this.classpath = sb.toString();}}public Class? compile(final String classname, final String source) {return compile(classname, source, null);}public Class? compile(final String classname, fin

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档