ToolProvider.getSystemJavaCompiler() return null 的解决方法
【1】利用java 编译器API 编译 普通的java文件
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 指针异常):
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【2】 解决方法
2.1)通过 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 文件夹中;
ToolProvider.getSystemJavaCompiler() return null 的解决方法相关推荐
- JPA-save()方法会将字段更新为null的解决方法
JPA-save()方法会将字段更新为null的解决方法 参考文章: (1)JPA-save()方法会将字段更新为null的解决方法 (2)https://www.cnblogs.com/qingmu ...
- Android中View转换为Bitmap及getDrawingCache=null的解决方法
Android中View转换为Bitmap及getDrawingCache=null的解决方法 参考文章: (1)Android中View转换为Bitmap及getDrawingCache=null的 ...
- laytpl语法_浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式 laytpl 模板语法 {{ d.field }} 输出一个普通字段,不转义html 官方的说明 但d.field 为空时会显示nu ...
- getActionBar()为null的解决方法总结(引用他人)
getActionBar()为null的解决方法总结(引用他人) 参考文章: (1)getActionBar()为null的解决方法总结(引用他人) (2)https://www.cnblogs.co ...
- Type.GetType()在跨程序集反射时返回null的解决方法
在开发中,经常会遇到这种情况,在程序集A.dll中需要反射程序集B.dll中的类型.如果使用稍有不慎,就会产生运行时错误.例如使用Type.GetType("BNameSpace.Class ...
- 【Android】getActionBar()为null的解决方法总结
前言 在使用 ActionBar的时候,有时候会爆出空指针异常,这是由于应用没有获取到 ActionBar 导致的,而导致应用没有获取到 ActionBar 的原因比較多.所以我们以下就来总结一下 A ...
- Response.Redirect(x.aspx);跳转后session为null的解决方法
通常我们做登陆的时候都是登录成功后为管理员保存一些信息,一般都会写类似下面的代码 if(登录成功) { Session["xx"] = "user"; Res ...
- SkinMagic使用后按钮加自定义图标或菜单GetMneu返回NULL的解决方法
我们在使用SkinMagic类美化窗口之后,在程序的InitInstance函数中会加入了SetDialogSkin函数, 但我们在使用时却发现,我们添加的菜单或者按钮图标无法正常显示! 一.出现这样 ...
- Excel导入SQL SERVER,数字和字符会被系统自动置为NULL的解决方法
在Excel中,我们时常会碰到这样的字段(最常见的就是电话号码),即有纯数字的(如没有带区号的电话号码),又有数字和其它字符混合 (如"区号-电 话号码")的数据,在导入SQLSe ...
最新文章
- 为什么 MySQL 的自增主键不单调也不连续
- c语言中dfs用pos做参数,使用DFS解决8-Puzzle
- php是否直接支持函数的重载,php函数重载的替代方法--伪重载详解
- 17 操作系统第四章 磁盘管理 磁盘的结构 磁盘调度算法 减少磁盘延迟时间的方法
- Servlet Request
- [高光谱] Hyperspectral-Classification-master 网络模型解析
- 护壁桩嵌入深度_钻孔灌注桩嵌岩深度最少多少
- 【学术分享】发顶会论文,怎么就那么难?
- 软件测试是不是IT行业最容易学的 ,大概需要多长时间,就业前景好吗?
- 找不到xinput1_3.dll怎么办?如何修复dll文件缺失
- 使用Crucible和FishEye链接svn库时遇到尝试添加或索引存储库时出现错误-版本中不存在的问题
- 有没有人可以解答一下?
- odoo14学习速记笔记
- vivo Z3i的usb调试模式在哪里,开启vivo Z3iusb调试模式的教程
- 给计算机老师的元旦祝福,2020给老师元旦祝福语
- seo提交工具_seo整体网站优化步骤大全
- 弹球游戏过关之缩短挡板(三)
- 20180102189刘钰
- iOS oc 手机摇一摇震动带音效功能
- oracle ora-各种常见java.sql.SQLException归纳