java依赖的外部文件路径的获取

在开发阶段一直使用以下方式调试没有问题:


String path = KStream104.class.getResource("/").getFile().toString();
File database = new File(path + Constants.geoIPFile);

但是,打包编译后,放到linux环境下,发现报空指针错误,这里的getResource("/")不再起作用了,并且返回值为null。
后面采用了下面的方式:

	static {
		String path = null;
		try {
			URL url = KStream104.class.getResource("/");
                        
            //获取当前用户的绝对路径
			String userdir = System.getProperty("user.dir");
			if(url!=null){  // 先判断url
				path = url.getFile();
			} 
			else if(StringUtils.isNotBlank(userdir)){  //再判断userdir
				path = userdir.endsWith("/") ? userdir : userdir + "/";
			} else {   //否则为空
				path = "";
			}
			System.out.println("path:" + path);
			log.info(path + Constants.geoIPFile);
			File database = new File(path + Constants.geoIPFile);
			reader = new DatabaseReader.Builder(database).build();
			
		} catch (IOException e) {
			log.error(e.getMessage());
		}
	}


posted @ 2018-04-20 15:36  硅谷工具人  阅读(1028)  评论(0编辑  收藏  举报
成功之道,在于每个人生阶段都要有不同的目标,并且通过努力实现自己的目标,毕竟人生不过百年! 所有奋斗的意义在于为个人目标实现和提升家庭幸福,同时能推进社会进步和国家目标! 正如古人讲的正心诚意格物致知,修身齐家治国平天下。