我正在尝试编写一个简单的Google App Engine网站,该网站会读取外部RSS Feed。我正在使用ROME和JDOM,但我得到的结论是ROME与Google App Engine不兼容,以及如何获取数据。
ROME使用 SyndFeedInput 类的 build 方法,但我找不到如何将其与Google App Engine和URL Fetch连接的方法。
我的示例代码是:
URL url = new URL(rss_url);
Reader r = new InputStreamReader(url.openStream());
SyndFeed feed = new SyndFeedInput().build(r);
但在我的第三排,我得到了一个
java.lang.IllegalStateException: JDOM could not create a SAX parser
如果我在一个独立的应用程序中运行代码,它会起作用,但是当我在本地通过Google App Engine触发代码时,我得到了例外。
我做错了什么以及我可以尝试哪些替代方案来阅读外部RSS?
答案 0 :(得分:1)
看起来GAE不支持ROME:
http://old.nabble.com/ROME-and-AppEngine-td23290454.html
http://code.google.com/p/googleappengine/issues/detail?id=1367
似乎解决方法是在应用程序中包含Xerces JAR的副本,以便JDOM不会尝试从GAE本身加载它。
答案 1 :(得分:1)
为我工作:GAE 1.4.0罗马1.0 jdom 1.1.1 xercesImpl-2.11.0.jar xml-apis.jar
答案 2 :(得分:0)
JDOM可以解决这个问题,然后解决了ROME的问题
将xercesImpl-x.x.x.jar放在war / WEB-INF / lib
中参见http://code.google.com/p/googleappengine/issues/detail?id=1367 许多人复制的不仅仅是xercesImpl或包含xerces的库(例如xalan的一些发行版),但xercesImpl就是你所需要的。
它仍然是一个解决方法,因为看起来JDOM没有正确使用JAXP来加载GAE的SAX解析器。
为我工作: GAE 1.3.7 罗马1.0 jdom 1.1.1 xercesImpl-2.6.1.jar