【idea】idea中文件部署遇到的一個問題

idea下面遇到一個很煩的問題

問題簡述: 在從另外一個項目把src文件和web文件拷過來後竟然不能使用類路徑去讀取配置文件,反射生成對象。然後折騰了好久,後來對比之前的在idea上做的項目,把project structer在重新設置一下就ok了,成功解決問題。

解決方案
img1
這裏的module結構一定要注意,這都是idea找資源,測試包的路徑,你一個不對,就報錯。然後一折騰就是幾個小時,很划不來。對於剛用idea的我就是,這些工具你不會用就很慢,然後你又想回到原來的舒適區,走老路子。這真的很打擊人啊!就是你想做卻做不到的趕腳。所以請仔細每一步操作。

2.關於tomcat輸出idea亂碼現象

網上查了很多資料都是改bin下面的兩個文件,這裏我就不說了,還改tomcat配置是的一個vm-option=Dfile-encoding=utf-8。可是我操作過後,還是亂碼。可是我把那Dfile…刪了過後在跑,竟然沒有亂碼了,但是我bin下面的文件還是加上了Dfile-encongding…所以也許別人走的過程不一定適合自己。根據別人的解決思路來找到自己的不足纔是解決問題的關鍵,你說呢?

3.關於加載resource文件的路徑代碼

img2
這是我通過讀取配置文件取出類名的工具類

package com.yzz.uitl;

import com.google.common.collect.Maps;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import java.util.Properties;

/**
 * describe:
 *
 * @author yanzhizheng
 * @date 2019//26
 */

public class PropertyUtil {

    //緩存加載文件
    private static Map<String, Properties> cache = Maps.newHashMap();

    //獲取類名
    public static String get(String configName, String key) {
        return getProperties(configName).getProperty(key);
    }

    public static Properties getProperties(String configName){
        if (cache.get(configName) != null) {
            return cache.get(configName);       //map中已經有對象了,直接返回去
        }

        //通過類路徑加載文件
        InputStream inputStream =
                PropertyUtil.class.getClassLoader().getResourceAsStream(configName);
        Properties config = new Properties();
        try {
            config.load(inputStream);
        }catch (IOException e) {
            e.printStackTrace();
        }
        cache.put(configName,config);
        return config;
    }

}

通過反射生成對象的工廠類
package com.yzz.uitl;

import java.util.Properties;

/**
 * describe:
 *
 * @author yanzhizheng
 * @date 2019//25
 */

public class MyFactory {

    public static Properties prop;

    public static Object getObject(String filePath, String key) {
        try {
            String classPath = PropertyUtil.get(filePath, key); //獲取類路徑
            if(classPath.equals("") || classPath == null) {
                throw new Exception("類路徑不對");
            }
            Object obj = Class.forName(classPath).newInstance(); //反射獲取對象
            return obj;
        }catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

總結:

遇到問題,真的不要煩,做事情遇到問題真的很常見,除非躺在牀上睡覺。自己解決不來就看看自己以前寫的東西,或者請教朋友和老師(他們真的是自己最好的資源)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章