将Apache POI与GraalVM本机图像一起使用-XMLBeans中的ClassCastException

时间:2019-12-04 14:27:48

标签: java excel apache-poi graalvm graalvm-native-image

使用Apache POI生成Excel工作表时出现以下错误。

代码在eclipse中执行,但是当转换为GraalVM本机映像时会出现以下错误。

Exception in thread "main" java.lang.ClassCastException: org.apache.xmlbeans.impl.values.XmlComplexContentImpl cannot be cast to org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook
        at org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook$Factory.newInstance(Unknown Source)
        at org.apache.poi.xssf.usermodel.XSSFWorkbook.onWorkbookCreate(XSSFWorkbook.java:460)
        at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:263)
        at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:257)
        at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:245)
        at POITest.test.ApachePOIExcelWrite.main(ApachePOIExcelWrite.java:21)

1 个答案:

答案 0 :(得分:0)

您必须:

  1. 运行检查版本
  2. 产生此异常的调用方法以生成正确的reflect-config.json
  3. 选择与Apache POI相关的类并将其复制到您的reflect-config.json
  4. 放置在application.properties中:

    quarkus.native.additional-build-args = -H:ReflectionConfigurationFiles = 将路由放置到reflect-config.json

例如,这是我添加到我的reflect-config.json中的类,以改善本机构建中的此异常:

 {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTWorkbookImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTWorkbookPrImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTWorksheetImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTXfImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.STBorderIdImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.STCellRefImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.STCellStyleXfIdImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.STCellTypeImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.STFillIdImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.STFontIdImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.STFontSchemeImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.STNumFmtIdImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.STPatternTypeImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.STRefImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.STXstringImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.SstDocumentImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.StyleSheetDocumentImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.officeDocument.x2006.customProperties.impl.CTPropertiesImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.officeDocument.x2006.customProperties.impl.PropertiesDocumentImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.impl.CTPropertiesImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.impl.PropertiesDocumentImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.officeDocument.x2006.relationships.impl.STRelationshipIdImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellType$Enum",
    "fields": [
      {
        "name": "table"
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.STFontScheme$Enum"
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.STPatternType$Enum"
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTBookViewImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTBookViewsImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTBooleanPropertyImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTBorderImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTBorderPrImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTBordersImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTCellImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTCellStyleXfsImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTCellXfsImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTColImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTColorImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTColsImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFillImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFillsImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFontImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFontNameImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFontSchemeImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFontSizeImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFontsImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTIntPropertyImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTNumFmtImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTNumFmtsImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTPageMarginsImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTPatternFillImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTRowImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTRstImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTSheetDataImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTSheetDimensionImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTSheetFormatPrImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTSheetImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTSheetViewImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTSheetViewsImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTSheetsImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTSstImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  },
  {
    "name": "org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTStylesheetImpl",
    "methods": [
      {
        "name": "<init>",
        "parameterTypes": [
          "org.apache.xmlbeans.SchemaType"
        ]
      }
    ]
  }