1

パスからファイルを読み込もうとしています。これは私のサンプル コードです。

String path = "repository"+ File.separator +"resources"+ File.separator +"api_templates";

        String fileName = path + TEMPLATE_FILE_PREFIX + type + ".xml";
        InputStream in = null;
        try {
           log.info("##############File path#############"+fileName);
            in = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);

ここでは、inputstream を null として取得します。システムがファイルをロードできなかったと思われます。しかし、ファイルパスを印刷すると、ファイルパスが正しく印刷されます。

この問題は、「yajsw」を使用してサーバーを Windows サービスとして実行しようとした場合にのみ発生します。

問題は何ですか?

編集:

私のサンプル wrapper-conf ファイル。

#********************************************************************
 # working directory
 #******************************************************************** 

wrapper.working.dir=${my_home}

 ............

 wrapper.java.additional.2 = -Xms256m 
 wrapper.java.additional.3 = -Xmx1024m 
 wrapper.java.additional.4 = -XX:MaxPermSize=256m 
 wrapper.java.additional.5 = -XX:+HeapDumpOnOutOfMemoryError 
 wrapper.java.additional.6 = -XX:HeapDumpPath=${my_home}\\repository\\logs\\heap-dump.hprof  
 wrapper.java.additional.7 = -Djava.endorsed.dirs=${my_home}\\lib\\endorsed;${java_home}\\jre\\lib\\endorsed
4

1 に答える 1

2

これは、リソースとファイル間のクラスパスの問題が原因です。クラスローダーを使用してファイルにアクセスすることはできません。そのためには、ファイル、ファイルリーダー、ファイル入力ストリームを使用する必要があります。このように変更すると、すべて正常に動作します。

InputStream in = new FileInputStream(filePath);

于 2014-01-10T05:45:06.513 に答える