getResource没有在webapp中加载资源

时间:2011-01-05 10:40:29

标签: java java-ee tomcat6

我已经创建了一个用于解组XML的jar,我正在使用以下代码来搜索xsd

Thread.currentThread().getContextClassLoader().getResource(DEFAULT_XSD_NAME)

,其中 DEFAULT_XSD_NAME = “destination.xsd”

我的xsd文件在相同的包结构中,并且在我的类具有上述代码的同一级别。 这在我的独立应用程序中工作正常但是当我将jar放在lib目录下的web应用程序中时,以下代码

Thread.currentThread().getContextClassLoader().getResource(DEFAULT_XSD_NAME).getFile()

下面给出空指针异常是堆栈跟踪

java.lang.NullPointerException

    com.raisonne.tr.impex.xmlprocessor.impl.XMLUnmarshallerImpl.validateXML(XMLUnmarshallerImpl.java:194)
    com.raisonne.tr.impex.xmlprocessor.impl.XMLUnmarshallerImpl.unmarshal(XMLUnmarshallerImpl.java:85)
    com.raisonne.tr.service.impex.impl.DestinationImportServiceImpl.parseXMLToObject(DestinationImportServiceImpl.java:95)
    com.raisonne.tr.service.impex.impl.DestinationImportServiceImpl.startDestinationImport(DestinationImportServiceImpl.java:82)
    com.raisonne.tr.backoffice.actions.impex.DestinationImportAction.destinationImport(DestinationImportAction.java:118)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)

我在tomcat 6.0.29上运行应用程序。

这方面的任何帮助/指针都非常适用。另外,如果我有一些与容器无关的解决方案,那将会很好。

2 个答案:

答案 0 :(得分:4)

将其置于default package它应该可以正常工作

Thread.currentThread().getContextClassLoader().getResource("/com/your/package/"+DEFAULT_XSD_NAME)

答案 1 :(得分:2)

因为在容器中,如果只是将它命名为destination.xsd,它会尝试从URI路径开始查看。将/置于前面,如/destination.xsd,将使其显示在servlet容器根目录中。