1. ホーム
  2. Java

Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。

2022-02-17 02:20:31

環境について

MyEclipse 8.6 + JDK 1.6.31

<スパン

質問

コンソールテストでは、設定ファイルは問題なく読み込めますが、デプロイ先が トムキャット 再度読み込むと、以下のエラーが発生します。

指定されたファイルが見つかりません

解決方法

でコンソールで正しく読み取れるコードをまず読者に紹介します。

package com.axt.sms.util;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util;
/**
 Properties; /** 
 * @version 1.0
 * @since JDK 1.6
 */
public class PropertiesConfig {  
	  
    /** 
     */  
    public static Properties readData(String filePath) {  
    	filePath = getRealPath(filePath);
        Properties props = new Properties();  
        try {  
            InputStream in = new BufferedInputStream(new FileInputStream(filePath));  
            props.load(in);  
            in.close();  
            return props;  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
    
    public static Properties readDBData(){
    	Properties props = new Properties();
    	try {
			props.load(new FileInputStream("db.properties").getClass().getResourceAsStream("db.properties")));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
    	return props;
    }
    private static String getRealPath(String filePath) {
    	return PropertiesConfig.class.getResource("/" + filePath).toString().substring(6);
    }
}  



<スパン 改善されたコードをもう一度見てみる。

package com.axt.sms.util;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util;

public class PropertiesUtil {
	private InputStream inputStream;
	private Properties properties;
	
	public PropertiesUtil(String fileName) {
		inputStream = this.getClass().getClassLoader().getResourceAsStream(fileName);    
		properties = new Properties();  
	}
		
	/**
	 * Get the signature
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public String getSignature() throws UnsupportedEncodingException{
		try {    
			properties.load(inputStream);    
		} catch (IOException e1) {    
			e1.printStackTrace();    
		} 
		return new String(properties.getProperty("signature").getBytes("ISO-8859-1"), "UTF-8"));
	}
		
	public static void main(String[] args) {
		try {
			System.out.println(new PropertiesUtil("sms.properties").getSignature());
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}
}



概要

<スパン

<スパン デプロイ先 トムキャット サーバーの場合は、絶対パスを取る必要があります。サーバにデプロイした後、ディレクトリのパスは動的に変更されるので 取得リソースアズストリーム メソッドを使用します。

<スパン

<スパン

<テーブル ウェンタシー ブログ記事は参考程度に、訪問を歓迎します。間違いがあれば、ご批判、ご訂正いただければと思います。元のブログ記事を再現する必要がある場合は、ソースを引用してください、ありがとうございます :) [CSDNブログ]をご覧ください。