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

沁海棠 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文件
但是 用程序编译就报空指针, 到底问题出来哪里
请大神赐教

一脸蒙逼 甚至去换了别的 路径从新创建测试依然报错。 源文件和路径都没问题。。。。
...全文
172 点赞 收藏 9
写回复
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);
回复
发动态
发帖子
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
社区公告
暂无公告