遇到一个关于ClassPath的奇怪问题 Classpath只认jar文件?No!
昨天在客户现场部署应用,解压后开始修改配置文件,以为一切顺利,结果发现程序根本就无视我的配置文件!!
启动代码是这样的:
java -cp . -Djava.ext.dirs=. xxx.yyy.Main deploy.properties
在当前目录有 XXX.jar deploy.properties a.zip 还有就是一堆类文件在 org文件夹下, 整个文件夹的文件,就是a.zip的解压出来的.
deploy.properties就是我修改的配置文件,结果无论怎么改,程序都无视我的修改. 然后我怒了,把deploy.properties删除了,发现程序依旧运行!! 疯了,deploy.properties是启动该程序必须的!!怎么可能还能启动,这是使用spring properties holder 加载的, 写法是 classpath:deploy.properties
终于开始怀疑是否是zip压缩包的原因,删掉!! 结果,正确运行了!!
奇怪,为啥呢??!! 竟然zip文件都当成jar文件处理?? 找来一个有Main类的jar文件,并改名为XXXX.zip,执行:
java -cp XXXX.zip xxx.yyy.Main //结果正常启动了!!
再狠一点,改为后缀改为rar, 执行 java -cp XXXX.rar xxx.yyy.Main , 结果一样,照样运行!!
继续狠一下, 执行
java -Djava.ext.dirs=. xxx.yyy.Main //没办法,照样运行!!!
再一次刷新我对Classpath的认识!!
blog comments powered by Disqus