调用一个private构造函数类的问题

lvzi98 2014-06-19 11:40:05
一个工具类PropertiesUtil1,代码如下
package com.wcg.util;


import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class PropertiesUtil1
{
private static String userPointUrl;
private static String userNickUrl;
private static String pointOperUrl;

static {
Properties prop = new Properties();
InputStream in = Object.class.getResourceAsStream("/resources/uts.properties");
try {
prop.load(in);
userPointUrl = prop.getProperty("arrears.url").trim();
userNickUrl = prop.getProperty("transaction.url").trim();
pointOperUrl = prop.getProperty("order.url").trim();

} catch (IOException e) {
e.printStackTrace();
}
}

/**
*
*/
private PropertiesUtil1() {
}

public static String getUserPointUrl() {
return userPointUrl;
}

public static String getUserNickUrl() {
return userNickUrl;
}

public static String getPointOperUrl() {
return pointOperUrl;
}

public static void main(String args[]){
System.out.println(PropertiesUtil1.getUserPointUrl());
// System.out.println(getUserNickUrl());
}

}


直接运行没有问题,能打印出结果,如果在
action中调用 如下所示,就会报反射错误,启动时正常
	public String loginCheck() {
//读取配置文件,
String url = PropertiesUtil1.getPointOperUrl();
System.out.println(url);
// session.getAttribute(Constants.SESSION_USER) == null,暂时不考虑SESSION
HttpSession session = ServletActionContext.getRequest().getSession();
}


报的异常如下
ERROR 2014-06-19 11:28:08 - Exception occurred during processing request: null
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:546)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.wcg.util.PropertiesUtil1
at com.wcg.action.LoginAction.loginCheck(LoginAction.java:129)
... 67 more

大神可知道是什么原因,用的struts2
...全文
519 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvzi98 2014-06-24
  • 打赏
  • 举报
回复
是的。这个类不能实例化他
oh_Maxy 2014-06-20
  • 打赏
  • 举报
回复
PropertiesUtil1是提供静态功能不需要实例化,可能某个地方做了注入配置或者注解。
lvzi98 2014-06-20
  • 打赏
  • 举报
回复
牛人很多啊……
疯癫行者 2014-06-19
  • 打赏
  • 举报
回复
引用 5 楼 magi1201 的回复:
读取配置文件,也可以通过线程去获取,这样就不用每次都改前面的类名称。
Thread.currentThread().getClass().getResourceAsStream(fileUrl)
姜小白- 2014-06-19
  • 打赏
  • 举报
回复
读取配置文件,也可以通过线程去获取,这样就不用每次都改前面的类名称。
Thread.currentThread().getClass().getResourceAsStream(fileUrl)
lvzi98 2014-06-19
  • 打赏
  • 举报
回复
知道什么原因了 这一行 InputStream in = Object.class.getResourceAsStream("/resources/uts.properties"); 改为这样 InputStream in = PropertiesUtil.class.getResourceAsStream("/resources/uts.properties"); 就好了
lvzi98 2014-06-19
  • 打赏
  • 举报
回复
知道什么原因了 这一行 InputStream in = Object.class.getResourceAsStream("/resources/uts.properties"); InputStream in = PropertiesUtil.class.getResourceAsStream("/resources/uts.properties");
姜小白- 2014-06-19
  • 打赏
  • 举报
回复
按一楼说的,将构造方法改为public 试试看
疯癫行者 2014-06-19
  • 打赏
  • 举报
回复
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.wcg.util.PropertiesUtil1 at com.wcg.action.LoginAction.loginCheck(LoginAction.java:129) ... 67 more 可能什么地方想要初始化你的这个类,但是由于构造方法是private的,所以初始化失败。 可以把构造方法去掉或者改成public试试看,找找原因。
vnvlyp 2014-06-19
  • 打赏
  • 举报
回复
引用 5 楼 magi1201 的回复:
读取配置文件,也可以通过线程去获取,这样就不用每次都改前面的类名称。
Thread.currentThread().getClass().getResourceAsStream(fileUrl)
+1 这个方便

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧