【发布时间】:2019-11-19 21:20:59
【问题描述】:
我在 Eclipse 中编写了一个有效的 Groovy 脚本,但是当从命令行调用时,它会抛出错误消息: 找不到 javax.xml.parsers.DocumentBuilderFactory 的提供程序
该错误是由解析 xlsx 文件的库 Fillo 引发的。问题似乎仍然很普遍,因为我发现很多页面都包含错误消息:
- Dealing with “Xerces hell” in Java/Maven?
- Groovy Grape dealing with dependency resolution
- Provider for javax.xml.parsers.DocumentBuilderFactory cannot be found
但无法解决问题或添加建议的解决方案。
我试图排除依赖:
@GrabExclude('xml-apis:xml-apis')
导入其他 jars 并检查我的 lib 文件夹,包括 {groovyinstallation}/lib 和 {usrhome}/.groovy
import groovy.util.logging.Log
import com.codoid.products.fillo.Connection
import com.codoid.products.fillo.Fillo
import com.codoid.products.fillo.Recordset
import groovy.transform.Field
import java.net.Proxy
import java.text.SimpleDateFormat
import java.util.logging.Logger
import groovy.xml.XmlUtil
@GrabExclude('xml-apis:xml-apis')
...
//Code Snippet where Error is thrown
Connection connection=fillo.getConnection(Path+"\\"+Filename.xlsx)
得到的错误信息如下:
Caught: javax.xml.parsers.FactoryConfigurationError: Provider for javax.xml.parsers.DocumentBuilderFactory cannot be found
javax.xml.parsers.FactoryConfigurationError: Provider for javax.xml.parsers.DocumentBuilderFactory cannot be found
at org.apache.poi.ooxml.util.DocumentHelper.<clinit>(DocumentHelper.java:100)
at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:395)
at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.<init>(ContentTypeManager.java:104)
at org.apache.poi.openxml4j.opc.internal.ZipContentTypeManager.<init>(ZipContentTypeManager.java:54)
at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:260)
at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:726)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:304)
at org.apache.poi.ooxml.util.PackageHelper.open(PackageHelper.java:37)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:303)
at com.codoid.products.fillo.Fillo.getWorkbook(Fillo.java:57)
at com.codoid.products.fillo.Fillo.getConnection(Fillo.java:41)
at com.codoid.products.fillo.Fillo$getConnection.call(Unknown Source)
at xlsxParser.loadXLSX(ResultsAutomation.groovy:406)
at xlsxParser$loadXLSX.call(Unknown Source)
at ResultsAutomation.run(ResultsAutomation.groovy:624)
【问题讨论】:
-
在黑暗中射击:您在命令行上使用的是 >= 9 的 JDK?
-
@cfrick 我当前的 Groovy 和 Java 版本:Groovy 版本:2.5.7 JVM:1.8.0_201 供应商:Oracle Corporation 操作系统:Windows 10
标签: groovy