Apache Tomcat 6.0을 사용하는 간단한 웹 응용 프로그램이 있습니다. "resources/mysql.properties"경로에서 속성 파일을 읽으려고합니다. 여기서 "resources"폴더는 "src"폴더 외부에 있습니다. Java 응용 프로그램으로 프로젝트를 실행하려고하면 잘 작동합니다. 하지만 서버에서 실행할 때 FileNotFoundException이 발생합니다.FileNotFound Apache Tomcat에서 실행되는 동안 예외가 발생 했습니까?
이것은 Console에서 실행되는 main이있는 Java 코드입니다.
package com.jm.test;
import com.jm.util.PropertyUtil;
public class CodeTester {
public static void main(String[] args) {
System.out.println(PropertyUtil.getDBPropertyValue("driver"));
}
}
이것은 PropertyUtil.Java 파일의 코드입니다.
/**
*
*/
package com.jm.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.MissingResourceException;
import java.util.Properties;
import org.apache.log4j.Logger;
/**
* @author Jaydeep Ranipa
*
*/
public class PropertyUtil {
public static final Logger log = Logger.getLogger(PropertyUtil.class);
private static final String resourceDir = "resources";
private PropertyUtil() {
}
private static Properties loadProperties(String fileName) throws IOException, FileNotFoundException {
System.out.println("filename: "+fileName);
InputStream fileStream = new FileInputStream(new File(fileName));
Properties props = new Properties();
props.load(fileStream);
return props;
}
public static String getDBPropertyValue(String key) {
Properties prop = null;
String value = "";
String fileName = "localmysql.properties";
try {
prop = loadProperties(resourceDir + "/" + fileName);
value = prop.getProperty(key);
if (value == null) {
throw new MissingResourceException("Property not found.", "DATABASE", key);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("properties file not found");
e.printStackTrace();
log.error("Properties file <<<"+resourceDir + "/" + fileName +">>> not found.");
value = "Error occured.";
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("properties file reading failed");
log.error("Properties file <<<"+resourceDir + "/" + fileName +">>> reading failed.");
value = "Error occured.";
} catch (MissingResourceException e) {
// TODO: handle exception
System.out.println("property not found");
log.error("Property <<<"+e.getKey()+">>> for <<<"+e.getClassName()+">>> not found.");
value = "Error occured.";
}
return value;
}
public static String getErrorMessage(String errorCode) {
Properties prop = null;
String message = "";
String fileName = "errormessage.properties";
try {
prop = loadProperties(resourceDir + "/" + fileName);
message = prop.getProperty(errorCode);
if (message == null) {
throw new MissingResourceException("Property not found.", "ERROR", errorCode)
}
} catch (FileNotFoundException e)
// TODO Auto-generated catch block
log.error("Properties file <<<"+resourceDir + "/" + fileName +">>> not found.")
message = "Something went wrong.";
} catch (IOException e) {
// TODO Auto-generated catch bloc
log.error("Properties file <<<"+resourceDir + "/" + fileName +">>> reading failed.");
message = "Something went wrong.";
} catch (MissingResourceException e) {
// TODO: handle exception
log.error("Property <<<"+e.getKey()+">>> for <<<"+e.getClassName()+">>> not found.");
message = "Something went wrong.";
}
return message
}
}
다음 코드는 웹 서버를 통해 실행할 때 오류를 제공합니다.
Class.forName(PropertyUtil.getDBPropertyValue("driver"));
con = DriverManager.getConnection(PropertyUtil.getDBPropertyValue("url"),
PropertyUtil.getDBPropertyValue("username"),
PropertyUtil.getDBPropertyValue("password"));
return con;
[Class.getResourceAsStream] (http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getResourceAsStream-java.lang.String-). .jar 또는 .war의 항목은 실제 파일이 아니므로 FileInputStream을 사용하여로드 할 수 없습니다. – VGR
resourceDir없이 filename을 직접 호출하고 도움이되는지 확인하십시오. 슬래시를 벗어나 시도해 볼 수도 있습니다. – yogidilip