为什么获取java.lang.AbstractMethodError:org.apache.poi.xssf.usermodel.XSSFCellStyle.getFillBackgroundColorColor()?

为什么获取java.lang.AbstractMethodError:org.apache.poi.xssf.usermodel.XSSFCellStyle.getFillBackgroundColorColor()?,java,excel,apache-poi,Java,Excel,Apache Poi,我在Java中的以下行中得到了这个错误: Color cellColor = (row.getCell(1).getCellStyle().getFillBackgroundColorColor());` java.lang.AbstractMethodError:org.apache.poi.xssf.usermodel.XSSFCellStyle.getFillBackgroundColorLorg/apache/poi/ss/usermodel/Color 我还检查了WEB-INF/li

我在Java中的以下行中得到了这个错误:

Color cellColor = (row.getCell(1).getCellStyle().getFillBackgroundColorColor());`
java.lang.AbstractMethodError:org.apache.poi.xssf.usermodel.XSSFCellStyle.getFillBackgroundColorLorg/apache/poi/ss/usermodel/Color

我还检查了WEB-INF/lib文件夹,只有两个jar ojdbc5.jar和ojdbc6.jar

我不知道为什么在使用getFillBackgroundColorColor时出现此错误


基本上,我想得到细胞的颜色。有人能帮我解决这个问题吗?

AbstractMethodError通常意味着依赖项中存在混淆。也许您缺少poi ooxml或有多个版本?

AbstractMethodError通常意味着依赖项中存在混淆。可能您缺少poi ooxml或有多个版本?

拥有WEB-INF/lib意味着您正在部署WAR文件。在这种情况下,库可以位于几个不同的位置,例如$TOMCAT_HOME/lib。检查您的类路径,例如,通过打印属于它的所有URL:

ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader) cl).getURLs();
for (URL url : urls) {
    System.out.println(url.getFile());
}
并确保POI的版本正确。如果您正在使用Tomcat,您可以签出

顺便说一句,您可能不应该提供ojdbc5.jar,它是非常旧的JDK和Oracle DB的一个非常旧的驱动程序。

拥有WEB-INF/lib意味着您正在部署WAR文件。在这种情况下,库可以位于几个不同的位置,例如$TOMCAT_HOME/lib。检查您的类路径,例如,通过打印属于它的所有URL:

ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader) cl).getURLs();
for (URL url : urls) {
    System.out.println(url.getFile());
}
并确保POI的版本正确。如果您正在使用Tomcat,您可以签出


顺便说一句,您可能不应该发布ojdbc5.jar,它是非常旧的JDK和Oracle DB的一个非常旧的驱动程序。

我已经更新了POI jar,错误现在已经消失了,但我想获得绿色、黄色等颜色名称,但使用当前代码返回对象org.apache.POI.xssf.usermodel。XSSFColor@dd523353. 您能帮我获取颜色名称吗?XSSFColor包含一个RGB值,您可以通过调用getTGB方法来获取该值。总共有16777216个唯一的RGB值,因此实际上无法获得每个值的颜色名称。如果您有一组需要标记的常用RGB值,我建议您创建一个地图,将RGB转换为相应的颜色名称。好的,谢谢。我已经更新了POI JAR,现在错误已经消失了,但是我想得到颜色名称,比如绿色,黄色,但是当前代码返回对象org.apache.POI.xssf.usermodel。XSSFColor@dd523353. 您能帮我获取颜色名称吗?XSSFColor包含一个RGB值,您可以通过调用getTGB方法来获取该值。总共有16777216个唯一的RGB值,因此实际上无法获得每个值的颜色名称。如果您有一组需要标记的常用RGB值,我建议您创建一个地图,将RGB转换为相应的颜色名称。好的,谢谢。我会这样做的。