- - PR -
DocumentオブジェクトをXMLに保存
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-10-14 17:46
いつもお世話になってます。UKです。
XMLファイルを読み込んでデータの変更を行い、もとのXMLファイルに保存したいのですが、 servletでしようとするとうまくいきません。 root cause java.lang.NoClassDefFoundError: org/apache/xml/serialize/OutputFormat at sampleservlet.processRequest(sampleservlet.java:28) at sampleservlet.doGet(sampleservlet.java:46) といったエラーがでます。 以下はソースです。 import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; import javax.xml.parsers.*; import org.apache.xml.serialize.*; import org.w3c.dom.*; import javax.xml.transform.*; import javax.xml.transform.stream.*; public class sampleservlet extends HttpServlet{ public final static String FS = System.getProperty("file.separator"); public void init(ServletConfig config) throws ServletException{ super.init(config); } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{ response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); String ctx = getServletContext().getRealPath("") + FS; String xmlfile = "./xml/makerlist.xml"; String outfile = "./xml/output.xml"; try{ DocumentBuilder docBld = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = docBld.parse(new File(ctx + xmlfile)); OutputFormat of = new OutputFormat(doc); of.setEncoding("Shift_JIS"); FileOutputStream fos = new FileOutputStream(ctx + outfile); OutputStreamWriter osw = new OutputStreamWriter(fos, "Shift_JIS"); Writer w = new PrintWriter(osw); XMLSerializer xs = new XMLSerializer(w, of); xs.asDOMSerializer(); xs.serialize(doc.getDocumentElement()); w.close(); }catch(Exception e){ out.println(e.getMessage()); } out.close(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ processRequest(request,response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{ processRequest(request, response); } } もしかしたらクラスパスに問題があるのかと思ったのですが、うまくいけませんでした。 .;C:\j2sdk1.4.1_02\lib\tools.jar; C:\Program Files\Apache Group\Tomcat 4.1\common\lib\servlet.jar; C:\j2sdk1.4.1_02\xalan-j_2_5_1\bin\xalan.jar; C:\j2sdk1.4.1_02\xerces-2_5_0\xercesImpl.jar; ご指導宜しくお願いします。 |
|
投稿日時: 2003-10-14 19:44
Tomcat が xalan, xerces を見つけられないのでしょう。
WEB-INF/lib 以下に該当する jar を置いてみては。 |
|
投稿日時: 2003-10-14 20:23
動きました。でくのぼうさんありがとうございました。
>Tomcat が xalan, xerces を見つけられないのでしょう。 しかし何故このようなことがおこるのでしょう? 他の環境では掲載したクラスパスでうまくいったのですが |
|
投稿日時: 2003-10-14 21:21
それは Tomcat のクラスローダについて調べるとわかると思います。
今回は WEB-INF/lib 以下に置くよう書きましたが、実は他にも JAR ファイルを置く候補があります。 アプリケーションの構成によって、どこに置くのかを決定するのが一般的と思われます。 http://jakarta.apache.org/tomcat/tomcat-4.1-doc/class-loader-howto.html 本家にこの説明がありますから是非ご覧になってみてください。 |
|
投稿日時: 2003-10-15 09:03
なるほど、今回は自分はcommon/lib以下に配置してできたのですが
JARファイルはアプリケーションによって置く場所が色々あったのですね。 勉強になりました。ありがとうございます |
1
