【问题标题】:JNIUS & TIKA - error trying to parseToStringJNIUS 和 TIKA - 尝试 parseToString 时出错
【发布时间】:2017-10-13 05:46:21
【问题描述】:

尝试使用 jnius 运行 tike-app 但遇到问题(macOS Sierra、Java 1.8 JDK、Python 2.7 和 Python 3.6) 在parseToString 命令之前,一切正常(tika.detect 的输出很好)。如果您运行此命令,似乎有一个弹出窗口炫耀 (也用java程序测试过,它可以工作)。但是使用 jnius 运行它会停止工作,并且没有输出也没有错误。

import os

os.environ['CLASSPATH'] = "tika-app-1.14.jar"
from jnius import autoclass
from jnius import JavaException

# Import the Java classes
Tika = autoclass('org.apache.tika.Tika')
Metadata = autoclass('org.apache.tika.metadata.Metadata')
File = autoclass('java.io.File')

# Raise an exception and continue if parsing fails
try:
    file = File('./source/test.doc')
    tika = Tika()
    meta = Metadata()
    detectText = tika.detect(file)
    print(detectText) # Working the output is: application/msword
    contentText = tika.parseToString(file) #here it stops no further steps are executed
    print(contentText)
except (JavaException,UnicodeDecodeError) as e:
    print("ERROR: %s" % (e))

【问题讨论】:

    标签: java python apache-tika pyjnius tika-server


    【解决方案1】:

    我终于找到了解决方案。缺少 JVM 的选项 告诉 tiki.jar 使用无头模式。

    #Config have to be before import minus
    import jnius_config
    jnius_config.add_options('-Djava.awt.headless=true')
    
    import os
    os.environ['CLASSPATH'] = "tika-app-1.14.jar"
    
    from jnius import autoclass
    
    ## Import the Java classes we are going to need
    Tika = autoclass('org.apache.tika.Tika')
    Metadata = autoclass('org.apache.tika.metadata.Metadata')
    FileInputStream = autoclass('java.io.FileInputStream')
    
    tika = Tika()
    meta = Metadata()
    text = tika.parseToString(FileInputStream("./source/test.doc"), meta)
    print(text)
    

    【讨论】:

      猜你喜欢
      • 2014-11-30
      • 2022-01-27
      • 2015-06-13
      • 1970-01-01
      • 2018-07-22
      • 2015-08-16
      • 2023-01-26
      • 2019-08-08
      相关资源
      最近更新 更多