2021-01-01

  • 今天想尝试一下jdk11,所以配置了一下环境变量Path ,结果出现了Exception in thread “main” java.lang.UnsupportedClassVersionError
  • 所以cmd+java -version 显示1.8
  • cmd +javac -version 显示11,
  • 应该是高版本编译之后在低版本上运行会有些解析不了,而且奇怪的是会出现编译和运行版本不一致的问题。
  • 接下来cmd+where java 和where javac, 发现第一种出现了两条路径,如下图:在这里插入图片描述

所以打开环境变量的配置部分,发现了确实有这条路径,这个路径下有3个,
在这里插入图片描述
只需将这条路径删除或者移到新配置的路径下面即可解决。但是疑惑的是为什么会出现这条路径,肯定不是我自己配置的。
之后一顿搜索结果如下:
1
2
3
总结:
在这里插入图片描述
在这里插入图片描述
同时安装的。

  • 外部jre在安装时,由操作系统自动配置了环境变量,且变量指向的路径只包含程序运行的java.exe,主要针对用户运行程序用的,打开jre也会发现下面没有javac.exe。
  • jdk里面的jre下,有lib+bin\server\jvm,用于运行java字节码文件,lib是运行时用到的包,之前版本中需要用到的JAVAHOME\lib 起始也是用于运行的。但是该jre下面同样没用javac.exe.
  • 在jdk\bin下面有javac和java,但是没有jvm,所以是为开发人员提供开发用的,所以现在只需要在配置环境变量的时候在path下面给出到bin的路径即可。
  • 那么只给出到jdk\bin的路径,怎么运行呢
  • 其实外面的jre和jdk\jre没有什么区别,都是用于解释执行字节码文件的,都有jvm和lib,都没有javac不能编译。
  • 所以如果安装的时候选择了安装外部jre,那么环境变量里就会自动配置好了路径,可以在给定的路径下执行,否则的话,操作系统会现在同目录下找jre,之后回去父目录下找,最终执行jdk里面的jre。
  • 有一个疑问,希望大佬能给解答,ProgramData\Oracle\Java\javapath 下面的java.exe 和与jdk同级别的jre\bin下面的java.exe有什么区别和联系,大家说的是前者是一个指向后者的快捷方式,但是我的不是,
    在这里插入图片描述
    很奇怪这个是怎么和同级别jre关联起来的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值