由于工作需要,项目组需要将一个cs端小程序打包成.exe 工具给业务部门使用,使用exe4j,因为exe4j一般打包都是使用的32的jre,所以又去官网下了一个32的jre1.8,安装在了一个新的盘符,随后在开启appium时,报错,appium日志报:java -version 异常。cmd命令javac正常,然而java和java报错:could not open xx\xx\jvm.cfg,小弟初步判断是安装了那个32位jre的原因,上网查了下资料,大概也是反复安装了jdk或者jre的原因,在网上找到了一个方便的解决办法,将path系统变量中对于java_home的配置至于最前,发现很好了解决了,然后也回想起当时在学校上学的时候,好像老师说过配置在path的最前面比较好,系统会优先检索,不过还是不是很理解,有木有大神了解将java_home变量配置置前和置后的原理区别,置前能解决我这个问题的原理。
系统对配置的读取是顺序读取的,并且满足后就跳出,即如果你在一个变量内配了两个相同东西,系统在获取的时候,在获取到第一个之后就满足要求了,就不会继续往下找了
######Path=C:\Program Files\Java\jdk1.7.0_17\bin;C:\Program Files\Java\jdk1.7.0_17\jre\bin; 配置的是jrk里面的jre。看了下path的配置,除了系统一些配置和其他软件的配置,没有相关jdk或者jre的配置了,后续安转jre也没有进行环境变量配置,这样也会对jre的加载造成影响吗?系统是根据注册表来加载path的?######用一个变量去循环接收,有的是判断是否为null,不是就break,这种是先到先得。有的不判断,这种就是覆盖了。
######回复 @风青山 : 嗯,对于path的作用有了一定的了解了,感谢,可能这个问题的出现是java方面的问题,看了下资料path对应的变量会在系统注册表中对应,我在后续安装的jre应该会在系统注册表中注册,所以会导致java和java -version运行出问题,置前就会直接找JAVA_HOME里对应的配置。######回复 @有一点儿梦想的咸鱼 : 按系统配置的顺序的,path配起来是一条字符串,最后会转化为一个字符串数组。系统不会遍历安装路径,那样很费力。path是给系统为查找可执行文件指定的路径,配置path后就可以在命令行中查找指定目录下的可执行文件,而不必切换到那个目录下执行。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。