【问题标题】:Google App Engine and Apache Poi loading templatesGoogle App Engine 和 Apache Poi 加载模板
【发布时间】: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


    【解决方案1】:

    这已在 r1650290 中修复。您需要使用每晚构建,自己从源代码构建,或者等待一两个月才能获得 3.12 beta 1(或更高版本)

    【讨论】:

    • 啊啊啊太棒了!感谢您的信息。我刚刚在我的 pom 中为 GAE 集成了夜间构建并进行了部署,它确实有效!我的问题终于解决了!伟大的工作小伙子......
    猜你喜欢
    • 2020-08-26
    • 2013-09-20
    • 1970-01-01
    • 2018-04-09
    • 2011-04-25
    • 2012-09-14
    • 2019-02-09
    • 2023-03-16
    • 2011-07-14
    相关资源
    最近更新 更多