-Antタスクに搭載したSeasar
ハマリ中。
public class Main { public static void main(String[] args) { S2Container container = S2ContainerFactory.create("dev/dev.dicon"); Hello hello = (Hello)container.getComponent(Hello.class); System.out.println(hello.say()); } }
<?xml version="1.0" encoding="ISO-8859-1"?> <project default="test" basedir="."> <target name="test"> <java classname="dev.Main"> <classpath> <pathelement path="context/WEB-INF/classes"/> <fileset dir="context/WEB-INF/lib"/> </classpath> </java> </target> </project>
こんな感じで、AntタスクからMainを通じてSeasarを動かす感じです。で、エラー。
javax.xml.parsers.FactoryConfigurationError: Provider com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl could not be instantiated: java.lang.NullPointerException
なんで〜。SAXParserFactoryImplはrt.jarの中にあるのに。。。助けて〜。
public class Main2 { private static class Handler extends DefaultHandler { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) { if(qName.equals("component")) { System.out.println(attributes.getValue("class")); } } } public static void main(String[] args) throws Exception { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); parser.parse(Main2.class.getResourceAsStream("dev.dicon"), new Handler()); } }
Seasarを外したこちらでも同じエラーがでる。。。まあ、文字どおりSAXParserFactoryImplが作れないみたいですね。なぜ?