问题起因
今天学习seata的时候,启动seata服务发现启动不了报下图错误。
![](https://img-blog.csdnimg.cn/img_convert/e3f2d034f45329ad24465aee3afddde8.png)
发现是自己jdk版本太高了,现在我用的是jdk17。
![](https://img-blog.csdnimg.cn/img_convert/51859515c9321b8addee2c1f3ae963b9.png)
然后我修改jdk的环境变量,确定保存好。
![](https://img-blog.csdnimg.cn/img_convert/624e64ebabb70b70ad134d9c4358ff47.png)
![](https://img-blog.csdnimg.cn/img_convert/fce0d20c0392054c87c0cae1a0895613.png)
发现jdk的版本还是没有变化。
![](https://img-blog.csdnimg.cn/img_convert/851fd800d87ba2f351ac87e871905a62.png)
问题原因
当使用安装版本的JDK程序时(一般是1.7版本以上),在安装结束后安装程序会自动将java.exe、javaw.exe、javaws.exe三个可执行文件复制到C:\Windows\System32目录,这个目录在WINDOWS环境变量中的优先级高于JAVA_HOME设置的环境变量优先级,故此直接更改JAVA_HOME会无效。
另外,JDK1.8安装版本,还会在C:\ProgramData\Oracle\Java目录中生成一些配置文件,并同时将此目录写到环境变量中的Path中
解决方法
删除C:\Windows\System32目录下的java.exe、javaw.exe、javaws.exe三个文件(如果没有就不用删)
![](https://img-blog.csdnimg.cn/img_convert/93f4b418c5ec82db8dc4d8932e5d0340.png)
大家可以用Everything来找,方便一点,不过要看清路径喔,别删错了。
![](https://img-blog.csdnimg.cn/img_convert/172bb14113904ca3a139e08e30979ef1.png)
2、删除环境变量Path中C:\ProgramData\Oracle\Java\javapath的配置
![](https://img-blog.csdnimg.cn/img_convert/4485970518603351df5376dccc1ee356.png)
校验是否成功
最后我们验证一下更改成功了没有
![](https://img-blog.csdnimg.cn/img_convert/bf035e26708c1dfa215052d69cdecd84.png)
可以看到完美解决了。
我们顺便试一下seata能否运行,也是启动了。
![](https://img-blog.csdnimg.cn/img_convert/0a6ca431d12dcb216f47e6f2acb78a3b.png)