使用Apache Tika Docker镜像解析SQLite文件失败求助
Apache Tika Docker容器无法解析SQLite文件问题
基础情况
- 使用
apache/tika:latest-fullDocker镜像,仅通过HTTP请求调用服务,无法解析SQLite文件 - 容器启动命令:
docker run -d -p 127.0.0.1:9998:9998 -v `pwd`/tika-config.xml:/tika-config.xml -v `pwd`/home/user/path/jars/:/tika-extras apache/tika:latest-full --config tika-config.xml
- 本地
/home/user/path/jars/目录包含slf4j-api-1.7.36.jar和sqlite-jdbc-3.44.1.0.jar,通过挂载到容器/tika-extras目录尝试添加到Tika类路径,同时已将这些jar包加入本地CLASSPATH - 启用SQLite解析器的初始配置文件
tika-config.xml:
<?xml version="1.0" encoding="UTF-8"?> <properties> <parsers> <parser class="org.apache.tika.parser.sqlite3"> </parser> <parser class="org.apache.tika.parser.DefaultParser"> <parser-exclude class="org.apache.tika.parser.ocr.TesseractOCRParser"/> </parser> </parsers> </properties>
问题现象
执行curl -T sample.sqlite http://localhost:9998/tika后,返回结果显示使用EmptyParser解析,无实际内容:
<?xml version="1.0" encoding="UTF-8"?><html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta name="X-TIKA:Parsed-By" content="org.apache.tika.parser.EmptyParser"/> <meta name="Content-Length" content="51250176"/> <meta name="Content-Type" content="application/x-sqlite3"/> <title>�</title> </head> <body/> </html>
调用/parsers端点未找到SQL解析器,确认解析器未成功加载。
排查更新1
- 将挂载目录中的jar包替换为
tika-parser-sqlite3-package-2.9.1.jar、tika-parser-sqlite3-package-2.9.1-tests.jar和tika-parser-sqlite3-package-2.9.1-sources.jar,移除原有jar包 - 修改配置文件,为SQLite解析器指定MIME类型:
<?xml version="1.0" encoding="UTF-8"?> <properties> <parsers> <parser class="org.apache.tika.parser.sqlite3"> <mime>application/x-sqlite3</mime> <parser class="org.apache.tika.parser.DefaultParser"> <parser-exclude class="org.apache.tika.parser.ocr.TesseractOCRParser"/> </parser> </parsers> </properties>
- 问题依旧,仍被
EmptyParser解析;确认配置文件已成功传入容器,但容器启动命令未自动将挂载目录的jar包加入类路径。
排查更新2
- 检查发现容器内CLASSPATH为空,手动执行以下命令添加类路径:
export CLASSPATH=:/tika-extras/tika-parser-sqlite3-package-2.9.1.jar
- 执行后问题仍未解决,SQLite文件依旧无法被正确解析。
内容的提问来源于stack exchange,提问作者Xavier Watson
相关产品推荐
相关产品推荐

