ToolProvider.getSystemJavaCompiler() return null 的解决方法
2016-02-22 16:09
232 查看
【1】利用java 编译器API 编译 普通的java文件
1.1)代码如下:
[b]-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------[/b]
[b]【2】 解决方法[/b]
[b]2.1)通过 [/b]System.out.println(System.getProperty("java.home")); ,我们知道了 java.home == C:\Program Files\Java\jre1.8.0_60 ;
引用 http://www.cnblogs.com/fangwenyu/archive/2011/10/12/2209051.html
中的解决方法,通过查看 ToolProvider 的源代码,我们知道 他需要查找 java.home 下面的 lib 里的 tools.jar 文件, 而 tools.jar 文件通常在 jdk/lib 文件夹而没有在 jre中, 所以,我们只需要把 tools.jar 复制到 你的java.home映射目录/lib/ 就可以了;
2.2)复制 tools.jar 到 C:\Program Files\Java\jre1.8.0_60\lib(java.home
== C:\Program Files\Java\jre1.8.0_60\)中后,运行结果为:
【3】 Conclusion
C1)需要知道 jvm 中的 java.home 映射的目录是什么?
不要瞎copy;
C2)知道 java.home后,就将 tool.jar copy
到 其路径下面 的 lib 文件夹中;
1.1)代码如下:
package com.corejava.chapter10_2; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; import javax.tools.JavaCompiler; import javax.tools.ToolProvider; public class JavaCompilerTest { public static void main(String[] args) throws FileNotFoundException { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); OutputStream out = new FileOutputStream("out.txt"); OutputStream err = new FileOutputStream("err.txt"); System.out.println(compiler); System.out.println(System.getProperty("java.home")); int result = compiler.run(null, out, err, "com/corejava/chapter10_2/Hello.java"); if(result == 0) { System.out.println("bingo"); } else { System.out.println("oops"); } } }1.2)错误如下(null 指针异常):
[b]-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------[/b]
[b]【2】 解决方法[/b]
[b]2.1)通过 [/b]System.out.println(System.getProperty("java.home")); ,我们知道了 java.home == C:\Program Files\Java\jre1.8.0_60 ;
引用 http://www.cnblogs.com/fangwenyu/archive/2011/10/12/2209051.html
中的解决方法,通过查看 ToolProvider 的源代码,我们知道 他需要查找 java.home 下面的 lib 里的 tools.jar 文件, 而 tools.jar 文件通常在 jdk/lib 文件夹而没有在 jre中, 所以,我们只需要把 tools.jar 复制到 你的java.home映射目录/lib/ 就可以了;
2.2)复制 tools.jar 到 C:\Program Files\Java\jre1.8.0_60\lib(java.home
== C:\Program Files\Java\jre1.8.0_60\)中后,运行结果为:
【3】 Conclusion
C1)需要知道 jvm 中的 java.home 映射的目录是什么?
不要瞎copy;
C2)知道 java.home后,就将 tool.jar copy
到 其路径下面 的 lib 文件夹中;
相关文章推荐
- 全面解析Java8观察者模式
- 在Eclipse中导入SVN库里的Maven项目
- 如何解决SpringMvc数据传输乱码问题
- hdu 2054 A == B ? (java)
- 单例模式
- Eclipse中 maven 工程 pom 文件 <execution> 出错
- 【菜鸟学Java】12:代理模式——静态代理怎么玩?
- eclipse创建maven模块工程
- 面向对象03-java基础
- Spring工作原理
- Eclipse
- java中什么是bridge method(桥接方法)
- Java:单例模式的七种写法
- maven项目在eclipse中debug
- maven项目在eclipse中debug
- Java中的final关键字 与 C#中的const, readonly关键字
- JAVA加密解密要用到的JAR包
- Java 微服务框架 Redkale 入门介绍
- java获取当前日期是星期几
- javacript 面向对象