2016-10-19 2 views
1

プロパティファイルが1つあります。名前はXYZ.propertiesです。このファイルから詳細を取得したいと思います。 私のプロパティファイルの場所は、私は、コードの下に使用しています。このためD:\properties_file\XYZ.propertiesJavaロードプロパティファイルjava.lang.NullPointerExceptionエラー

ある

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

public class LoadProp { 
    private static Properties prop = new Properties(); 
    public static Properties getProperties() throws Exception { 
     if (prop.isEmpty()) { 
      InputStream fis = LoadProp.class.getResourceAsStream("D:\\properties_file\\XYZ.properties"); 
      prop.load(fis); 
     } 
     return prop; 
    } 
} 

public class demo extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    private static Properties propFile; 

    public void doPost(HttpServletRequest request, HttpServletResponse response) { 
     try { 
      propFile = LoadProp.getProperties(); 
      System.out.println(propFile.getProperty(Constants.URL)); 
     } 
     catch (ServletException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (Exception e1) { 
      e1.printStackTrace(); 
     } 
    } 
} 

しかし、私はprop.load(fis)ラインでこれを実行すると、それは私に次のエラー

java.lang.NullPointerException 
+0

リソースはファイルではなく、ファイルシステムに存在せず、ディレクトリ区切り文字としてバックスラッシュを持たず、ドライブ文字もその名前の一部として使用しません。 – EJP

答えて

1

変更するには、このラインを与えます:

InputStream fis = LoadProp.class.getResourceAsStream("D:\\properties_file\\XYZ.properties"); 

から

InputStream fis = new FileInputStream("D:\\properties_file\\XYZ.properties"); 

getResourceAsStreamは、アプリの外にあるファイルを読むためには、JavaファイルのAPIを使用して、クラスパス(あなたのアプリケーション内のリソース)からリソースを読み取るように設計されています。

+1

親切に説明するdownvote? –

+1

私はダウン投票者ではありませんが、 "アプリケーション内のリソース"ではなく "クラスパスからのリソース"がより適切になります。 –

0

Class.getResourceAsStreamは、ファイルシステムの場所を開きません。クラスパス内のリソースを検索しようとします。代わりにFileInputStreamでプロパティを読むことができます。

関連する問題