package com.xyls.spring;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Properties;import com.sun.org.apache.commons.beanutils.BeanUtils;public class ActionFactory {
//private static URI uri;
public static Action getAction(String actionName){
Properties p = new Properties();
/*FileInputStream fis = (FileInputStream) ActionFactory.class.getClassLoader().
getResourceAsStream("config.properties");*/
try {
//URI uri = ActionFactory.class.getClassLoader().getResource("config.properties").toURI();
//p.load(new FileInputStream(new File(uri)));
//p.load(new FileInputStream("config.properties"));
p.load(ActionFactory.class.getClassLoader().getResourceAsStream("config.properties"));
String actionImplName = (String) p.getProperty(actionName);
String actionMessage = (String) p.getProperty(actionName+"_msg");
Object obj = Class.forName(actionImplName).newInstance();
//BeanUtils是Apache Commons BeanUtils提供的辅助类
BeanUtils.setProperty(obj, "message", actionMessage);
return (Action) obj;
} catch (IOException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} /*catch (URISyntaxException e) {
e.printStackTrace();
}*/
return null;
}
public void testFactory(){
Action action = ActionFactory.getAction("theAction");
System.out.println(action.execute("actionfactory"));
}
public static void main(String[] args) {
new ActionFactory().testFactory();
//System.out.println(new ActionFactory().getAction("theAction"));
}}
异常:Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at com.xyls.spring.ActionFactory.getAction(ActionFactory.java:28)
at com.xyls.spring.ActionFactory.testFactory(ActionFactory.java:63)
at com.xyls.spring.ActionFactory.main(ActionFactory.java:68)config.properties属性文件放在src下,内容为
theAction=com.xyls.spring.impl.UpperAction
theAction_msg=hello
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Properties;import com.sun.org.apache.commons.beanutils.BeanUtils;public class ActionFactory {
//private static URI uri;
public static Action getAction(String actionName){
Properties p = new Properties();
/*FileInputStream fis = (FileInputStream) ActionFactory.class.getClassLoader().
getResourceAsStream("config.properties");*/
try {
//URI uri = ActionFactory.class.getClassLoader().getResource("config.properties").toURI();
//p.load(new FileInputStream(new File(uri)));
//p.load(new FileInputStream("config.properties"));
p.load(ActionFactory.class.getClassLoader().getResourceAsStream("config.properties"));
String actionImplName = (String) p.getProperty(actionName);
String actionMessage = (String) p.getProperty(actionName+"_msg");
Object obj = Class.forName(actionImplName).newInstance();
//BeanUtils是Apache Commons BeanUtils提供的辅助类
BeanUtils.setProperty(obj, "message", actionMessage);
return (Action) obj;
} catch (IOException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} /*catch (URISyntaxException e) {
e.printStackTrace();
}*/
return null;
}
public void testFactory(){
Action action = ActionFactory.getAction("theAction");
System.out.println(action.execute("actionfactory"));
}
public static void main(String[] args) {
new ActionFactory().testFactory();
//System.out.println(new ActionFactory().getAction("theAction"));
}}
异常:Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at com.xyls.spring.ActionFactory.getAction(ActionFactory.java:28)
at com.xyls.spring.ActionFactory.testFactory(ActionFactory.java:63)
at com.xyls.spring.ActionFactory.main(ActionFactory.java:68)config.properties属性文件放在src下,内容为
theAction=com.xyls.spring.impl.UpperAction
theAction_msg=hello
返回的null吧
看看是不是路径的问题
换种方式 保证你ok
ActionFactory.class.getResourceAsStream("/com/test/config.properties");
/com/test 是你的 文件 所在的包名 ,替换成你的。。试试。
注意 com前面 的/ 不能 缺少。、、。
at com.xyls.spring.ActionFactory.getAction(ActionFactory.java:37)
at com.xyls.spring.ActionFactory.testFactory(ActionFactory.java:63)
at com.xyls.spring.ActionFactory.main(ActionFactory.java:68)
Caused by: com.sun.org.apache.commons.logging.LogConfigurationException: com.sun.org.apache.commons.logging.LogConfigurationException: java.lang.NullPointerException (Caused by java.lang.NullPointerException) (Caused by com.sun.org.apache.commons.logging.LogConfigurationException: java.lang.NullPointerException (Caused by java.lang.NullPointerException))
at com.sun.org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:543)
at com.sun.org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:235)
at com.sun.org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:209)
at com.sun.org.apache.commons.logging.LogFactory.getLog(LogFactory.java:351)
at com.sun.org.apache.commons.beanutils.BeanUtils.<clinit>(BeanUtils.java:111)
... 3 more
Caused by: com.sun.org.apache.commons.logging.LogConfigurationException: java.lang.NullPointerException (Caused by java.lang.NullPointerException)
at com.sun.org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:397)
at com.sun.org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:529)
... 7 more
Caused by: java.lang.NullPointerException
at com.sun.org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:374)
... 8 more
返回的是null,我的配置文件就放在src下
从用来加载类的搜索路径打开具有指定名称的资源,以读取该资源。config.properties 文件要加到 CLASSPATH 里。