ToolProvider.getSystemJavaCompiler()方法空指针的排坑

在将Java编译功能打包为Jar并在服务器上运行时,遇到ToolProvider.getSystemJavaCompiler()方法抛出空指针异常的问题。通过检查Maven配置、Spring依赖和Java源代码,发现问题是由于jre目录缺少tools.jar。尝试复制jdk的tools.jar到jre并未解决问题。最终解决方案是手动指定使用jre/bin下的java.exe运行Jar,同时确保tools.jar存在,成功解决了空指针异常。
摘要由CSDN通过智能技术生成

起因:

我在做一个编译Java代码的功能,基本写的差不多了,我就想把它打包部署到我服务器上跑一跑,但是这不做不知道,一做果然就出了问题。我在IDEA上跑一点问题都没有,但是打包成Jar后,后台就显示空指针异常。

排坑:(这里解决办法仅供参考)

Maven打包是没问题的,而且Jar包也能正常跑,说明我的Maven设置和Spring依赖问题应该是没问题的,而经过我一番检查,空指针出现在:

//获得javacompile实例
 JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

我都蒙了,因为这个是Java本身提供的方法,为啥获取不到JavaCompiler。于是我进一步查了这个的源代码:

public static JavaCompiler getSystemJavaCompiler() {
        return instance().getSystemTool(JavaCompiler.class, defaultJavaCompilerName);
    }

好像看不出啥,在往下:

private <T> T getSystemTool(Class<T> clazz, String name) {
        Class<? extends T> c = getSystemToolClass(clazz, name);
        try {
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值