Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Popen运行Java应用程序_Java_Python_Linux_Apache Tika - Fatal编程技术网

使用Popen运行Java应用程序

使用Popen运行Java应用程序,java,python,linux,apache-tika,Java,Python,Linux,Apache Tika,我正在Linux服务器上运行tika,我想使用python(subprocess.Popen)运行它 但是,我有一个非根访问权限,所以我只有一个本地java安装。每次我需要为每个会话设置java主目录和路径时: 导出JAVA_HOME=/usr/JAVA/jdk1.5.0_07/bin/JAVA 导出路径=$PATH:/usr/java/jdk1.5.0_07/bin 然后我可以从java目录运行tika,并将输出保存到某个文件out\u txt.txt curl www.vit.org/dow

我正在Linux服务器上运行tika,我想使用python(subprocess.Popen)运行它

但是,我有一个非根访问权限,所以我只有一个本地java安装。每次我需要为每个会话设置java主目录和路径时:

导出JAVA_HOME=/usr/JAVA/jdk1.5.0_07/bin/JAVA

导出路径=$PATH:/usr/java/jdk1.5.0_07/bin

然后我可以从java目录运行tika,并将输出保存到某个文件
out\u txt.txt

curl www.vit.org/downloads/doc/tarriff.doc | java-jar tika-app-1.3.jar--text>out\u txt.txt

因此,我需要知道如何使用Popen来:

  • 使用Popen设置java主目录和路径
  • 将Tika输出写入文件
    out\u txt.txt
  • 1) 你可以:

    • Popen
      之前使用
      os.setenv('JAVA_HOME','/usr/JAVA/jdk1.5.0_07')
      ,这将为所有后续调用设置环境变量。或对于路径:

      os.environ['PATH'] += ":/usr/java/jdk1.5.0_07"
      
    • 将环境dict作为以下内容传递给
      Popen

    (二)

    • 打开文件进行写入,并将其作为
      stdout
      (可选
      stderr
      )传递到
      Popen

    • 通过将
      shell=True
      传递给
      Popen
      ,将其留给shell:

      Popen("curl www.vit.org/downloads/doc/tariff.doc | java -jar tika-app-1.3.jar --text >out_txt.txt", shell=True)
      

    太好了,我只是觉得命令Popen(“curl www.vit.org/downloads/doc/tarriff.doc | java-jar tika-app-1.3.jar--text>out_txt.txt”,shell=True)有问题,因为当我设置java目录的路径时,它没有“curl”我得到以下命令:>>>>/bin/sh:curl:command未找到,那么是否有一种方法可以同时运行Java和curl?您不应该替换
    路径
    ,而是将Java bin目录附加到它。更新了我的答案以反映这一点。或者只使用完整路径。
    output = open(outfile, 'wb')
    subprocess.Popen(args, stdout=output, stderr=output)
    
    Popen("curl www.vit.org/downloads/doc/tariff.doc | java -jar tika-app-1.3.jar --text >out_txt.txt", shell=True)