IDEA 中获取普通java工程中的properties文件

IDEA 中获取普通java工程中的properties文件

记录一次再将普通java工程转成maven工程后,读取资源文件的问题。。。
在读取资源的代码是这样的:

public class PropertyManager {

    private static Properties props = new Properties();

    static {
        try {
		//这里读取资源目录下的资源
        props.load(PropertyManager.class.getClassLoader().getResourceAsStream("com/XX/XX/config.properties"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Object get(String key){
        return null==props?null:props.get(key);
    }

    public static String getString(String key){
        return null==props?null:props.get(key).toString();
    }

    public static Integer getInteger(String key){
        return null==props?null:Integer.valueOf(props.get(key).toString());
    }

    public static void main(String[] args) {
        Object initTankCount = get("initTankCount");
        System.out.println(initTankCount.toString());
    }
}

在还是普通的javaSE工程的时候,一切都是美好的,但是当我将其转为maven工程后,再次读取就出现问题了:

java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
	at java.util.Properties$LineReader.readLine(Properties.java:434)
	at java.util.Properties.load0(Properties.java:353)
	at java.util.Properties.load(Properties.java:341)
	at com.fq.tank.PropertyManager.<clinit>(PropertyManager.java:12)
Exception in thread "main" 

主要是因为:

PropertyManager.class.getClassLoader().getResourceAsStream("com/XX/XX/config.properties")

这句代码读取到的信息是空,导致异常,百思不得其解啊,怎么就时空指针了呢,之前都是正常的啊。

想了想变更的地方,就剩下普通工程转为maven工程这一个操作了,就想应该就是这个问题导致,于是将config.properties文件拷贝到resources目录下,通过

PropertyManager.class.getClassLoader().getResourceAsStream("config.properties")

这样取加载,居然加载成功了,看来问题还真是处在转maven的原因上。

这个时候又想了,总不能因为我转了一个maven就影响到了我原来的正确代码啊 ,有没有办法处理下呢 ?
于是去工程目录下找编译后的文件信息,工程目录结构:
在这里插入图片描述
分别进入以上两个目录下面找文件:
图片一:
在这里插入图片描述
图片二:
在这里插入图片描述
发现图片一和图片二中都能找到config.properties文件,但是为什么会出现转了maven后就读取失败呢?
原来是maven编译默认的路径是图片二中的路径,所以转了maven后默认是将编译结果放在这个路径下,且非java文件在这个com目录下面是找不到的,而这里找到的配置文件是添加到resources目录下才能看到的。

所以要想之前的代码不出问题,只需要将编译的结果指向out目录下就行了,接下来就是在IDEA中进行修改,如图:
在这里插入图片描述
这样操作后,编辑结果就指向了out目录,这样以前的代码有可以正常运行了!!!

如果仍然不行,尝试在pom.xml文件中添加如下代码,然后重新编译:

<build>
 <resources>
      <resource>
          <directory>src/main/java</directory>
          <includes>
              <include>**/*.*</include>
          </includes>
      </resource>
  </resources>
</build>

这样在out目录下还是可以看到非.class的文件。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值