Hi, everyone, i'm running my
servlet to do xml transformation using xalan. Everything was running fine until recently i faced the following error.
java.lang.IncompatibleClassChangeError: Unimplemented interface method
at org.apache.xalan.xpath.dtm.DTMNodeVector.(DTMNodeVector.java:69)
at org.apache.xalan.xpath.dtm.DTM.(DTM.java:309)
at org.apache.xalan.xpath.dtm.DTMLiaison.parse(DTMLiaison.java:198)
at org.apache.xalan.xslt.XSLTEngineImpl.getSourceTreeFromInput(XSLTEngineImpl.java:955)
at org.apache.xalan.xslt.XSLTEngineImpl.process(XSLTEngineImpl.java:643)
at invoice.service(invoice.java:50)
at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java)
at org.apache.tomcat.core.Handler.service(Handler.java)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java)
at org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java)
at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java)
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java)
at java.lang.Thread.run(Thread.java)
my code is as follows:-
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.xalan.xslt.*;
import java.util.*;
public class invoice extends HttpServlet {
String path;
public void init(){
ResourceBundle bundle = ResourceBundle.getBundle("invoice");
try{
// Set default path as stated in the properties file.
path = bundle.getString("defaultPath");
}catch(Exception e){}
}
public void service(javax.servlet.ServletRequest req,
javax.servlet.ServletResponse res)
throws javax.servlet.ServletException, java.io.IOException
{
/* // default path
String path ="/home/inv/"; */
String in = "";
String sheet = "";
String tempxml = req.getParameter("xmlfilename");
String tempxsl = req.getParameter("xslfilename");
if (tempxml.charAt(0) == '/')
in = tempxml;
else
in = path + tempxml;
if (tempxsl.charAt(0) == '/')
sheet = tempxsl;
else
sheet = path + tempxsl;
// Transform
try {
XSLTProcessor processor = XSLTProcessorFactory.getProcessor();
processor.process(new XSLTInputSource(new FileInputStream(in)),
new XSLTInputSource(new FileInputStream(sheet)),
new XSLTResultTarget(res.getOutputStream()));
} catch (Exception e) {
PrintWriter out = res.getWriter();
out.println("Error: " + e + ". ");
out.println("<a href=/osb/invoice/>Try again</a>");
out.close();
}
//return;
}
}
I will be very grateful if someone can tell me wat's wrong.