动态编译报错,一上午不知道问题出在哪里 求大神赐教

沁海棠 2017-03-28 01:35:48
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int i = compiler.run(null,null,null,"f:/Hello.java"); 是这一行报的错
System.out.println(i);


Exception in thread "main" java.lang.NullPointerException

确定 Hello源文件是正确的, 确定路径是正确的,
用控制台可以编译 并指向Hello文件
但是 用程序编译就报空指针, 到底问题出来哪里
请大神赐教

一脸蒙逼 甚至去换了别的 路径从新创建测试依然报错。 源文件和路径都没问题。。。。
...全文
209 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
沁海棠 2017-03-28
  • 打赏
  • 举报
回复
是否可以这样理解,编写程序用的是一套jre 运行用的是另外一套,编写程序用的那套有开发工具,也就是jdk下的jre可以访问到lib的toos工具包,而运行程序用的是另外那套,里面没有工具包,但是运行的程序,需要调用工具包来编译指定源文件,但是他没有toos包?
李德胜1995 2017-03-28
  • 打赏
  • 举报
回复
引用 7 楼 qinhaotong 的回复:
[quote=引用 6 楼 pany1209 的回复:] [quote=引用 5 楼 qinhaotong 的回复:] [quote=引用 3 楼 pany1209 的回复:] [quote=引用 2 楼 qinhaotong 的回复:] [quote=引用 1 楼 pany1209 的回复:] 你打印一下compile这对象是不是为空? System.out.println(compile==null);
我擦 真是空 为啥!!!!!!!![/quote] 把jdk的bin目录下的tool.jar拷贝到jre下面的bin里面试试。。。。[/quote] 然而并没有这个文件, 只有policytool 和servertool jre的bin里面都有[/quote] 说错。。。是jdk的lib目录下的tools.lib拷贝到jre文件的lib里面。。。[/quote] 谢大神,能大概说些为啥么。 jdk自带一套jre 然后还有一套jre 好吧,看来要去查资料了 [/quote] 你跟进查看方法代码就知道了
沁海棠 2017-03-28
  • 打赏
  • 举报
回复
引用 6 楼 pany1209 的回复:
[quote=引用 5 楼 qinhaotong 的回复:] [quote=引用 3 楼 pany1209 的回复:] [quote=引用 2 楼 qinhaotong 的回复:] [quote=引用 1 楼 pany1209 的回复:] 你打印一下compile这对象是不是为空? System.out.println(compile==null);
我擦 真是空 为啥!!!!!!!![/quote] 把jdk的bin目录下的tool.jar拷贝到jre下面的bin里面试试。。。。[/quote] 然而并没有这个文件, 只有policytool 和servertool jre的bin里面都有[/quote] 说错。。。是jdk的lib目录下的tools.lib拷贝到jre文件的lib里面。。。[/quote] 谢大神,能大概说些为啥么。 jdk自带一套jre 然后还有一套jre 好吧,看来要去查资料了
李德胜1995 2017-03-28
  • 打赏
  • 举报
回复
引用 5 楼 qinhaotong 的回复:
[quote=引用 3 楼 pany1209 的回复:] [quote=引用 2 楼 qinhaotong 的回复:] [quote=引用 1 楼 pany1209 的回复:] 你打印一下compile这对象是不是为空? System.out.println(compile==null);
我擦 真是空 为啥!!!!!!!![/quote] 把jdk的bin目录下的tool.jar拷贝到jre下面的bin里面试试。。。。[/quote] 然而并没有这个文件, 只有policytool 和servertool jre的bin里面都有[/quote] 说错。。。是jdk的lib目录下的tools.lib拷贝到jre文件的lib里面。。。
沁海棠 2017-03-28
  • 打赏
  • 举报
回复
引用 3 楼 pany1209 的回复:
[quote=引用 2 楼 qinhaotong 的回复:] [quote=引用 1 楼 pany1209 的回复:] 你打印一下compile这对象是不是为空? System.out.println(compile==null);
我擦 真是空 为啥!!!!!!!![/quote] 把jdk的bin目录下的tool.jar拷贝到jre下面的bin里面试试。。。。[/quote] 然而并没有这个文件, 只有policytool 和servertool jre的bin里面都有
沁海棠 2017-03-28
  • 打赏
  • 举报
回复
ToolProvider.getSystemJavaCompiler() 结果为null没有获取到 JavaCompiler 但这是为什么,说好的返回值呢
李德胜1995 2017-03-28
  • 打赏
  • 举报
回复
引用 2 楼 qinhaotong 的回复:
[quote=引用 1 楼 pany1209 的回复:] 你打印一下compile这对象是不是为空? System.out.println(compile==null);
我擦 真是空 为啥!!!!!!!![/quote] 把jdk的bin目录下的tool.jar拷贝到jre下面的bin里面试试。。。。
沁海棠 2017-03-28
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
你打印一下compile这对象是不是为空? System.out.println(compile==null);
我擦 真是空 为啥!!!!!!!!
李德胜1995 2017-03-28
  • 打赏
  • 举报
回复
你打印一下compile这对象是不是为空? System.out.println(compile==null);

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧