簡體   English   中英

如何在python多線程中執行jar文件

[英]How to execute jar file in python multithreading

在我的項目中,我有一個jar文件(由其他開發人員編寫),可以將內容從pdf復制到文本文件。 使用python多線程概念,我嘗試執行此jar。

運行此腳本后,我可以看到已創建文本文件。 但文件大小為0KB。 為什么內容沒有復制到此文件。 但是我嘗試在命令行中運行此jar,這按預期工作。 有人可以告訴我提供解決方案嗎?

from threading import Thread
import os
import sys
import time
import urllib2
from lxml import etree, html
import re
import Queue
import traceback


def createfile(x):
    try:
        file="test_"+str(x)
        print "java -jar tika-app-1.1.jar -t --encoding=utf8 \"%s\" > \"%s\" "%("C:\\samplefile.pdf",file)
        os.system("java -jar tika-app-1.1.jar -t --encoding=utf8 \"%s\" > \"%s\" "%("C:\tmp\samplefile.pdf",file))
    except Exception,e:
        print "excet",traceback.format_exc()

def process():
    try:
        result = Queue.Queue()
        threads = [Thread(target=createfile, args=(x,)) for x in range(1,5)]
        for t in threads:
            t.start()
        for t in threads:
            t.join()
    except:
        print "exception",traceback.format_exc()
        pass
    end_time = time.time()
    print "Estimate time", end_time - start_time

if __name__ == '__main__':
    process()

我的輸出:

Exception in thread "main" java.net.MalformedURLException: unknown protocol: c
        at java.net.URL.<init>(Unknown Source)
        at java.net.URL.<init>(Unknown Source)
        at java.net.URL.<init>(Unknown Source)
        at org.apache.tika.cli.TikaCLI.process(TikaCLI.java:393)
        at org.apache.tika.cli.TikaCLI.main(TikaCLI.java:101)
Exception in thread "main" java.net.MalformedURLException: unknown protocol: c
        at java.net.URL.<init>(Unknown Source)
        at java.net.URL.<init>(Unknown Source)
        at java.net.URL.<init>(Unknown Source)
        at org.apache.tika.cli.TikaCLI.process(TikaCLI.java:393)
        at org.apache.tika.cli.TikaCLI.main(TikaCLI.java:101)
Exception in thread "main" java.net.MalformedURLException: unknown protocol: c
        at java.net.URL.<init>(Unknown Source)
        at java.net.URL.<init>(Unknown Source)
        at java.net.URL.<init>(Unknown Source)
        at org.apache.tika.cli.TikaCLI.process(TikaCLI.java:393)
        at org.apache.tika.cli.TikaCLI.main(TikaCLI.java:101)
Exception in thread "main" java.net.MalformedURLException: unknown protocol: c
        at java.net.URL.<init>(Unknown Source)
        at java.net.URL.<init>(Unknown Source)
        at java.net.URL.<init>(Unknown Source)
        at org.apache.tika.cli.TikaCLI.process(TikaCLI.java:393)
        at org.apache.tika.cli.TikaCLI.main(TikaCLI.java:101)
Estimate time 1.73799991608

您告訴Java應用程序讀取此文件: C: mpsamplefile.pdf因為\\t在Python字符串中變成了Tab字符。 然后,Java應用程序將看到C:沒有/\\ ,並假定它必須是URL(例如http:ftp: 但是當它詢問時,沒有URL協議處理程序支持它,因此是例外。

為避免此類問題,請使用os.path.join()

inputFile = os.path.join('C:', 'tmp', 'samplefile.pdf')

或者使用/代替\\ ; 訪問文件時,Windows上的Java會轉換這些定界符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM