当前位置: 技术问答>java相关
ClassLoader的问题,高手进来!
来源: 互联网 发布时间:2015-07-02
本文导语: 在一个网站应用中采用Tomcat做服务器测试,我编写了一个JavaBean,由于此Bean需要定义一系列参数,于是我又作了一个config_1.xml的配置文件,在其中定义参数。但是出现了问题,如下: 1.JavaBean和引用此JavaBean的JSP文件...
在一个网站应用中采用Tomcat做服务器测试,我编写了一个JavaBean,由于此Bean需要定义一系列参数,于是我又作了一个config_1.xml的配置文件,在其中定义参数。但是出现了问题,如下:
1.JavaBean和引用此JavaBean的JSP文件都已经编写和部署完成,我把config_1.xml文件放到了/web-inf/lib下面,并且在系统环境变量classpath中指向了/web-inf/lib,运行后报告“找不到config_1.xml”。
2.我又在tomacat/bin目录下面放了一份,错误同上,总之无论config_1.xml放到什么地方,classpath也配置了,就是找不到。
3.我编写了一个标准的应用程序,import这个Bean的class,测试成功,config_1.xml找到了。
经过调试程序发现错误出现在以下这段代码中:
...
URL confURL = LoadConfiguration.class.getClassLoader().getResource(configFile);
if (confURL == null)
LoadConfiguration.class.getClassLoader().getResource("/" + configFile);
if (confURL == null)
Thread.currentThread().getContextClassLoader().getResource(configFile);
if (confURL == null)
confURL = ClassLoader.getSystemResource(configFile);
...
发现在标准应用程序中只要config_1.xml在classpath中,confURL就有值,说明可以找到,但是在tomcat中 LoadConfiguration.class.getClassLoader()返回null,说明找不到类装载器,出错了!
错误原因找到了,但是总是找不到解决办法,查看jdk关于class类的文档,得到了如下结论:
ClassLoader getClassLoader()
Returns the class loader for the class. Some implementations may use null to represent the bootstrap class loader. This method will return null in such implementations if this class was loaded by the bootstrap class loader.
请问这个问题如何解决?
1.JavaBean和引用此JavaBean的JSP文件都已经编写和部署完成,我把config_1.xml文件放到了/web-inf/lib下面,并且在系统环境变量classpath中指向了/web-inf/lib,运行后报告“找不到config_1.xml”。
2.我又在tomacat/bin目录下面放了一份,错误同上,总之无论config_1.xml放到什么地方,classpath也配置了,就是找不到。
3.我编写了一个标准的应用程序,import这个Bean的class,测试成功,config_1.xml找到了。
经过调试程序发现错误出现在以下这段代码中:
...
URL confURL = LoadConfiguration.class.getClassLoader().getResource(configFile);
if (confURL == null)
LoadConfiguration.class.getClassLoader().getResource("/" + configFile);
if (confURL == null)
Thread.currentThread().getContextClassLoader().getResource(configFile);
if (confURL == null)
confURL = ClassLoader.getSystemResource(configFile);
...
发现在标准应用程序中只要config_1.xml在classpath中,confURL就有值,说明可以找到,但是在tomcat中 LoadConfiguration.class.getClassLoader()返回null,说明找不到类装载器,出错了!
错误原因找到了,但是总是找不到解决办法,查看jdk关于class类的文档,得到了如下结论:
ClassLoader getClassLoader()
Returns the class loader for the class. Some implementations may use null to represent the bootstrap class loader. This method will return null in such implementations if this class was loaded by the bootstrap class loader.
请问这个问题如何解决?
|
1.2.config_1.xml放到classes目录
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。