XML request error: Internal Server Error (500)解决方法

XML request error: Internal Server Error (500)解决方法

以下是网上找的最多的资料:

网上很容易找到一篇关于fckeditorjava文件上传扩展的帖子。但是,实践的时候经常会有人遇到servlet error的报错。如果有log,或正在debug,可以看到报错信息:java.lang.NoClassDefFoundError: org/apache/xml/serializer/TreeWalker
    at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:821)
    at com.fredck.FCKeditor.connector.ConnectorServlet.doGet(ConnectorServlet.java:151)
找不到TreeWalker这个类。

   原本这个类是包含在xalan.jar中的,但是xalan-j2.7.0版的发布包中,将serializer包中的类单独打包成serializer.jar,不再包含在xalan.jar中,所以才会即使添加了xalan.jar也无法找到该类,添加后即可解决问题。

网上的相关资料:

> You need to include serializer.jar file also.  This file includes the
> serializer.  In the Xalan Java 2.7 release, serializer code is included in
> this jar file.  The release 2.6 has serializer code included in the
> xalan.jar file.

:我的总结是:一般来说fckeditor出现问题首先web.xml里面是否配置正确,然后看是目录否权限问题

第三可能是xalan.jar不存在。

 

后面发现问题还是没有解决,开始从源代码中找问题的根源。

找到:browser.html中找

var oXML = new FCKXml() ;

       alert('111111');

       if ( callBackFunction ){

              alert('2222:'+sUrl);

              oXML.LoadUrl( sUrl, callBackFunction ) ;   // Asynchronous load.

       }else{

              alert('3333');

              return oXML.LoadUrl( sUrl ) ;

       }

发现是在加载LoadUrl xml文件的时候报错,找到FCKXmlfckxml.js文件中定义的。

oXmlHttp.onreadystatechange = function()

              {

                     if ( oXmlHttp.readyState == 4 )

                     {

                            oFCKXml.DOMDocument = oXmlHttp.responseXML ;

                            alert('444444:'+oXmlHttp.status);

                            if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 ){

                                   asyncFunctionPointer( oFCKXml ) ;

                            }else{

                                   alert('5555555555555:'+oXmlHttp.responseText);

                                   alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;

                            }

                     }

              }

弹出oXmlHttp.status=500和异常情况信息:

java.net.URISyntaxException:Illegal character in path at index 18: file:///D:/Program File/

Apache Software Foundation/Tomcat 5.5/webapps/zeqi/upload

       at java.net.URI$Parser.fail<URI.java:2809>

       at java.net.URI$Parser.checkChars<URI.java:2902>

       at java.net.URI$Parser.parseHierarchical<URI.java:3066>

       at java.net.URI$Parser.parse<URI.java:3014>

       at java.net.URI.<init><URI.java:578>

另外一种方法:在本地tomcat下测试的时候,如果启动控制台,在点击fck图片上传的时候控制台也会报上面相同的错误。确定了找到问题的原因之后,下面就比较好解决问题了。

 

主要原因是由于文件夹Program File中的空格所致,所以可以把我们发布在tomcat下的工程放到没有空格的文件夹下,如D盘根目录下。

修改tomcat配置文件,如:D:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\server.xml

Host节点配置上加一个Context<Context path="" docBase="D:\zeqi" reloadable="true" debug="0"></Context>

 

重新启动就可以了。由于开发的时候是用的eclipse+jetty+webwork(richtexteditor),在eclipse中运行的时候是没有问题的。

另外关于图片上传上去之后,选择显示不了图片的问题是由于端口不对,可以修改webwork.properties中的下面这行:

### used to build URLs, such as the UrlTag

webwork.url.http.port = 8081

修改成tomcat的端口号就可以了。

你可能感兴趣的:(request)