我已经创建了一个用于解组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上运行应用程序。
这方面的任何帮助/指针都非常适用。另外,如果我有一些与容器无关的解决方案,那将会很好。
答案 0 :(得分:4)
将其置于default package
它应该可以正常工作
或
Thread.currentThread().getContextClassLoader().getResource("/com/your/package/"+DEFAULT_XSD_NAME)
答案 1 :(得分:2)
因为在容器中,如果只是将它命名为destination.xsd
,它会尝试从URI路径开始查看。将/
置于前面,如/destination.xsd
,将使其显示在servlet容器根目录中。