2

我正在尝试使用 Google AppEngine 上的 Apache POI 库解析 excel 2007 (.xlsx) 文件,但是在这样做时我遇到了异常(见下文)。

java.lang.IllegalAccessException: Class com.google.appengine.tools.development.agent.runtime.Runtime$21 can not access a member of  class org.apache.poi.xssf.usermodel.XSSFSheet with modifiers "protected"

所以我咨询了 Apache POI 团队,但他们声称这是 AppEngine 问题。我不确定 AppEngine 问题的正确位置,但我知道很多 appengine 开发人员监控 Stackoverflow。所以在这里发布这个问题。

为 Apache POI 团队提交的错误:https ://issues.apache.org/bugzilla/show_bug.cgi?id=55665

这个错误有一个示例 Maven 项目,以及重现它的说明。我不确定如何在此处附加此 zip 文件。

如果有人知道如何解决这个问题,请告诉我,或者提交错误的正确位置。

堆栈跟踪的关键部分是:

java.lang.IllegalAccessException: Class com.google.appengine.tools.development.agent.runtime.Runtime$21 can not access a member of  class org.apache.poi.xssf.usermodel.XSSFSheet with modifiers "protected"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:105)
at com.google.appengine.tools.development.agent.runtime.Runtime$22.run(Runtime.java:488)
at java.security.AccessController.doPrivileged(Native Method)
at com.google.appengine.tools.development.agent.runtime.Runtime.checkAccess(Runtime.java:485)
at com.google.appengine.tools.development.agent.runtime.Runtime.checkAccess(Runtime.java:479)
at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:123)
at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:135)
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:60)
4

1 回答 1

1

我遇到了同样的问题。我认为这只是开发服务器的问题。诚然,这并不能完全回答你的问题,但我想情况至少不像你想象的那么简单。为了解决这个问题,我一直在标准 Java 项目(使用虚拟数据)中开发我的 POI 代码,然后将其复制到 App Engine 项目中。

我已经用谷歌记录了这个问题:https ://code.google.com/p/googleappengine/issues/detail?id=11752

如果您有兴趣,在记录问题的过程中,我创建了一个示例项目,该项目也可在 App Engine 上使用(它在生产环境中运行时工作)。

于 2015-03-06T11:57:23.733 回答