【发布时间】:2015-01-07 11:19:42
【问题描述】:
我在使用 GAE 和 Apache POI 时遇到问题。我在任何较旧的帖子中都找不到正确的答案,所以我将尝试在这里解释我的问题。
我们正在编写一个简单的 Web 应用程序,它将发送给它的数据的 XML 文件转换为 PDF、Word 或 HTML 文件。一切都通过 servlet(简单的请求/响应)运行。应显示/提供这些文件以供下载。
我们一直在使用 Apache-Poi 创建 Word 文件,就像它们过去的样子。但是,我遇到了在标头中添加图像的问题(从我目前阅读的内容来看,也是众所周知的 Apache-POI 问题)。该问题的解决方案是使用模板 word 文档并从那里复制粘贴标题,或者只是用数据填充它并发送回响应。
在本地运行我的 GAE 应用程序时,这两种解决方案都可以正常工作:模板 word 文件被加载并填充了数据。部署后,我在尝试打开模板文件的地方出现安全异常:
**XWPFDocument doc = new XWPFDocument(template);**
"template" 是 InputStream,它是项目结构中的一个 File。
*Uncaught exception from servlet
java.lang.NoClassDefFoundError: com.sun.org.apache.xerces.internal.util.SecurityManager is a restricted class. Please see the Google App Engine developer's guide for more details.
at com.google.apphosting.runtime.security.shared.stub.com.sun.org.apache.xerces.internal.util.SecurityManager.<clinit>(SecurityManager.java)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:370)
at org.apache.poi.util.SAXHelper.trySetXercesSecurityManager(SAXHelper.java:89)
at org.apache.poi.util.SAXHelper.newXMLReader(SAXHelper.java:52)
at org.apache.poi.util.SAXHelper.getSAXReader(SAXHelper.java:106)
at org.apache.poi.util.SAXHelper.readSAXDocument(SAXHelper.java:123)
at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:376)
at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.<init>(ContentTypeManager.java:105)
at org.apache.poi.openxml4j.opc.internal.ZipContentTypeManager.<init>(ZipContentTypeManager.java:56)
at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:188)
at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:665)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:274)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39)
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:121)
at com.ebcont.profile.WordGenerator.generateWord(WordGenerator.java:100)
at com.ebcont.profile.DetailsServlet.renderWord(DetailsServlet.java:218)*
任何帮助都将不胜感激,因为我已经坚持了几个月了(感谢上帝,这仍然是次要要求)。
【问题讨论】:
标签: google-app-engine apache-poi