在AppEngine上使用Apache POI库解析Excel 2007文件时受保护的类成员上的IllegalAccessException

时间:2013-10-18 12:50:29

标签: google-app-engine apache-poi

我正在尝试使用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

这个bug有一个示例maven项目,以及重现它的说明。 我不知道如何在此处附加此zip文件。

如果有人知道如何解决这个问题,那么请告诉我,或者告知错误的地方。

stacktrace的关键部分是:

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)

1 个答案:

答案 0 :(得分:1)

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

我已将此问题记录在Google:https://code.google.com/p/googleappengine/issues/detail?id=11752

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