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);

在这里,我将输入流设为空。我怀疑系统无法加载文件。但是当我打印我的文件路径时,它会正确打印我的文件路径。

仅当我尝试使用“yajsw”将服务器作为 Windows 服务运行时才会出现此问题。

可能是什么问题?

编辑:

我的示例包装器配置文件;

#********************************************************************
 # 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

这是因为资源和文件之间的类路径问题。我们不能使用类加载器来访问文件。为此,我们需要使用 File、filereader、文件输入流。像这样改变后一切正常;

InputStream in = new FileInputStream(filePath);

于 2014-01-10T05:45:06.513 回答