Inputstream is null, while loading a file from a file path in windows service

2k views Asked by At

Im trying to read a file from a path. This is my sample code;

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

Here i get inputstream as null. I suspect the system could not load the file. But when i print my filepath, it correctly prints my file path.

This problem occurs only when i try to run my server as windows service, using "yajsw".

What might be the issue?

Edit:

My Sample wrapper-conf file;

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

There are 1 answers

0
Ratha On BEST ANSWER

This is because of a classpath issue between resources and files. We can not use classloaders to access files. For that we need to use File, filereader, file input stream. After changing like this everything works fine;

InputStream in = new FileInputStream(filePath);