在tomcat下运行正常,但是使用了weblogic之后出现各种的src下的文件找不到。
先看以下的各种获取文件路径的方法:
1.
String path = getClass().getResource("").getFile().toString();结果-->D:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/zhsl/yzdx84/war/WEB-INF/lib/_wl_cls_gen.jar!/cn/com/startdima/
=====>可以获取到路径但是用录进去读取文件的时候还是找不到改文件的
2.
Class<?> c = InitDB.class;
String classpath = c.getClassLoader().getResource("").getPath();
结果-->/D:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/zhsl/yzdx84/war/WEB-INF/classes/
3.
String classpath2 = sc.getRealPath("/");
结果-->null
4.
ClassLoader classloader =Thread.currentThread().getContextClassLoader();
//这句是把配置文件直接读进来
InputStream is =classloader.getResourceAsStream("UserInfoZhyl.ini");
URL path2 =classloader.getResource("constant.db");
结果-->zip:D:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/zhsl/yzdx84/war/WEB-INF/lib/_wl_cls_gen.jar!/constant.db
分析:1._wl_cls_gen.jar!如果采用的是war包进行部署的话,weblogic会将src目录下的所有文件打包成这个jar,所以会发现在项目存放的位置中的src目录下是空的。如果用正常的路径获取自然是获取不到,如1、2
2.如果项目一定要采用weblogic的war部署的话,只能用4,获取。老大告诉我,一般正式的生成上不会采用war部署的方式,直接部署编译包就不会存在这个问题。