JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();出现空指针异常的问题

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();可以获得环境下边的编译器的引用,但为什么我们在debug到这一语句的时候,查看到此函数返回的是一个null值,即没有编译器。。。。

我们知道,jre是java runtime environment,我们在运行java程序的时候其实就是调用jre里面的java.exe或者javaw.exe,后者不会有dos框跳出(这是在后台执行java程序的命令)。

我们安装jdk1.6的时候,会在安装包java下发现jdk1.6.0_07和jre1.6.0_07两个文件夹,在jdk1.6.0_07下有一个jre包,包里的内容和jre1.6.0_07文件夹下的内容是一样的。这是因为我们在开发程序的时候需要用到jre,所以jdk1.6.0_07下有一个jre包,但只运行java程序的时候,只会用到jre1.6.0_07下的命令。

弄清楚这一点,问题就好说了,我们要获得编译器,可是jre1.6.0_07文件夹下根本没有编译器,所有我们应该使用jdk1.6.0_07文件夹下的jre,如果我们用的IDE是MyEclipse的话,在windows=》pereference=》java=>installl jre里面,添加我们需要的jre,并勾选它。这样在MyEclipse中出现的空指针异常就解决了哦。。。。。

为什么我们用命令行执行相同的程序不会出现那个空指针异常呢,那是因为我们在寻找jre的时候是在优先考虑jdk下的jre的,但eclipse下是指定了jre的,所有我们在命令行下不会出错。。

如果你把程序打包成可以双击的jar文件,问题可能又来了,双击jar文件,其实是调用了jre的java -jar命令的,这个jre不是我们想要用的jre,修改如下:

在IE中的文件夹选项中,选择"文件类型"
找到jar类型的文件
点击"高级"

open

编辑

可以看到"C:/Program Files/Java/jdk1.6.0_07/bin/javaw.exe" -jar "%1" %*

这是我已经改好的路径,路径错的就按这个改过来吧。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值