java动态编译整个项目,解决jar包找不到问题.docVIP

java动态编译整个项目,解决jar包找不到问题.doc

  1. 1、本文档共9页,可阅读全部内容。
  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动态编译整个项目,解决jar包找不到问题

java动态编译整个项目,解决jar包找不到问题 原文:/index.php/javac/ 动态将java文件编译为class文件解决方案: 将temp\sdl\src目录中的java源文件编译成class文件,并存放到temp\sdl\classes目录中 java中早就提供了用java方式去动态编译java源文件的接口,有关java动态编译的API都在javax.tools包中。使用jdk1.6以上版本提供的JavaCompiler工具来动态编译java源文件。 我们可以通过ToolProvider类的静态方法getSystemJavaCompiler得到JavaCompiler对象实例。 // 获取编译器实例???? JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();?? 得到JavaCompiler对象实例后,我们可以调用该工具的getTask(Writer out, JavaFileManager fileManager, DiagnosticListener? super JavaFileObject diagnosticListener, IterableString options, IterableString classes, Iterable? extends JavaFileObject compilationUnits) 方法获取一个编译任务对象。 ? CompilationTask compilationTask = compiler.getTask(null, fileManager, diagnostics, options, null, compilationUnits);?? 该方法的第一个参数为文件输出,这里我们可以不指定,我们采用javac命令的-d参数来指定class文件的生成目录。 第二个参数为文件管理器实例 ? // 获取标准文件管理器实例? ??? StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);? 该文件管理器实例的作用就是将我们需要动态编译的java源文件转换为getTask需要的编译单元。 ? // 获取要编译的编译单元?? ?? Iterable? extends JavaFileObject compilationUnits = fileManager.getJavaFileObjectsFromFiles(sourceFileList);? 第三个参数DiagnosticCollectorJavaFileObject diagnostics是在编译出错时,存放编译错误信息。 第四个参数为编译命令选项,就是javac命令的可选项,这里我们主要使用了-d和-sourcepath这两个选项。 ? /**?? * 编译选项,在编译java文件时,编译程序会自动的去寻找java文件引用的其他的java源文件或者class。 -sourcepath选项就是定义java源文件的查找目录, -classpath选项就是定义class文件的查找目录,-d就是编译文件的输出目录。?? */?? ?? IterableString options =Arrays.asList(-encoding,encoding,-classpath,jars,-d, targetDir, -sourcepath, sourceDir);? ? 第五个参数为类名称 第六个参数为上面提到的编译单元,就是我们需要编译的java源文件 当我们得到CompilationTask compilationTask编译任务后,我们就可以调用compilationTask.call()方法进行编译工作 ? // 运行编译任务??? compilationTask.call()? ? package?com.util; ?? ?? import?java.io.File; ?? import?java.io.FileFilter; ?? import?java.io.IOException; ?? import?java.util.ArrayList; ?? import?java.util.Arrays; ?? import?java.util.List; ?? ?? import?javax.tools.Diagnostic; ?? import?javax.tools.DiagnosticCollector; ?? import?javax.tools.JavaCompiler; ?? import?jav

文档评论(0)

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

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

1亿VIP精品文档

相关文档