我正在尝试使用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)
答案 0 :(得分:1)
我遇到了同样的问题。我认为这只是开发服务器的一个问题。不可否认,这并没有完全回答你的问题,但我认为这种情况至少不像你想的那样糟糕。为了解决这个问题,我一直在标准Java项目中开发我的POI代码(使用虚拟数据),然后将其复制到App Engine项目中。
我已将此问题记录在Google:https://code.google.com/p/googleappengine/issues/detail?id=11752
如果您有兴趣,在记录问题的过程中,我创建了一个示例项目,该项目也可以在App Engine上运行(它在生产环境中运行)。