开发环境设置中的⼩问题--环境变量的顺序
java系统变量设置 在搭建Java开发环境的时候遇到了⼀个⼩问题 -- 在⽤javac预编译完java⽂件后,执⾏时总会报错:
"xxx program" has been compiled by a more recent version of the Java Runtime (class file version xx.x), this version of the Java Runtime only recognizes class file versions up to xx.x
上⾯这个错⼤概意识是说编译⽤的库⽐运⾏⽤的库版本要新,所以编译后⽆法执⾏。我把java库都安装了,该更新的也都更新了,应该没有什么问题呀。后来在⽹上⼀搜才发现,可能是⾃⼰环境变量设置的问题。
⾃⼰在电脑中安装的最新JDK路径添加在了环境变量中的最后⼀位,也就是操作系统在查命令时,如果之前的路径都没有匹配成功,才会使⽤最新的java库。这样导致的问题是,编译javac命令使⽤的是最新安装的编译库,但执⾏java命令运⾏时却⽤来之前安装其他程序时附带的java运⾏库(很多程序运⾏需要java执⾏环境的⽀持,因此会预装java运⾏库)。版本较⽼的运⾏库在之前的环境变量中被到并加以使⽤,最新的运⾏库因为在靠后的环境变量中因⽽被忽略,只有最新的编译库被使⽤(其他程序⼀般不会附带安装java的编译库)。新的编译库加上⽼的运⾏库,版本不搭,就报错了~~~
解决⽅法其实很简单:把最新JDK路径的在环境变量中的位置提前就好了。
同样的问题在使⽤Anaconda搭建python环境时也会出现(python虽然不⽤编译,但运⾏调⽤不同的库仍然会有版本匹配的问题):Anaconda安装时默认是不添加⾃⼰的安装路径进⼊系统环境变量的,担⼼Anaconda⾃⼰带的python库和之前程序安装时带的python起冲突。
不过这样可能导致的问题时conda下安装的python库在其他程序中⽆法使⽤,只⽤切换到conda环境下才能使⽤。当然这可能就是conda 开发者的⽤意:我只创造⼀个⾃⼰使⽤的运⾏环境,不⼲涉其他程序。不过如果想要在conda环调⽤的话,就得⾃⼰⼿动添加conda⾥的库路径到环境变量⾥了。
这也给了我⼀点启⽰,专⽤程序的环境变量尽量提前,通⽤程序的环境变量靠后,这样专⽤程序下升级后或最新的命令就能优先被调⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论