gpt4 book ai didi

java - process Builder java无法运行java中的某些python代码。怎么解决?

转载 作者:行者123 更新时间:2023-12-02 03:19:00 27 4
gpt4 key购买 nike

我正在使用 java 创建 ProcessBuilder 来运行 python。

这两个py都可以在python程序中成功运行。 (这两个py代码没有问题)

输入.py:

print 'hello'  
number=[3,5,2,0,6]
print number
number.sort()
print number
number.append(0)
print number
print number.count(0)
print number.index(5)

TESTopenBaseOnt.py:

from rdflib import URIRef, Graph, Namespace
from rdflib.plugins.parsers.notation3 import N3Parser
from rdflib.namespace import RDF, OWL, RDFS
from rdflib import URIRef, BNode, Literal
from rdflib import Namespace
from rdflib.namespace import RDF, FOAF, RDFS
from rdflib import Graph

gUpdate = Graph()
print ".> Step....1"
gUpdate.parse("BBCOntology.rdf" )
print ".> Step....2"
print gUpdate.serialize(format='xml')
print ".> Finished......."
#

如图所示。

该代码适用于 python:input.py但是,它不适用于 python:TESTopenBaseOnt.py
可能是因为java无法运行python中的parse函数。结果显示,程序停在了step1。

public static void main(String [] args) throws IOException
{

try

{
ProcessBuilder pb = new ProcessBuilder("C:/Python27/python","C:Desktop//searchTestJava//input.py");

// ProcessBuilder pb = new ProcessBuilder("C:/Python27/python","C:Desktop//searchTestJava//TESTopenBaseOnt.py");



Process p = pb.start();
BufferedReader bfr = new BufferedReader(new InputStreamReader(p.getInputStream()));

System.out.println(".........start process.........");
String line = "";
while ((line = bfr.readLine()) != null){
System.out.println("Python Output: " + line);
}

System.out.println("........end process.......");


}catch(Exception e){System.out.println(e);}


}

那么如何解决python在java中无法运行的问题 enter image description here

最佳答案

您的脚本运行,但未到达“第 2 步”,因此

gUpdate.parse("BBCOntology.rdf" )

将是问题的根源。可能是因为文件 BBCOntology.rdf 不在 Python 进程的当前工作目录中。或者可能是 Python 进程没有打开该文件的权限。

从 Python 进程中读取错误流并用 Java 打印出来可能是值得的。使用 p.getErrorStream() 的方式与使用 p.getInputStream() 的方式相同。

或者,更简单的是,将异常处理程序添加到您的 Python 代码中,以捕获异常消息并将其打印到标准输出:

import traceback

try:
gUpdate = Graph()
print ".> Step....1"
gUpdate.parse("BBCOntology.rdf" )
print ".> Step....2"
print gUpdate.serialize(format='xml')
print ".> Finished......."
except Exception as exc:
traceback.print_exc()
raise exc

然后,您的 Java 进程应该打印该消息,这可能会提供信息。

关于java - process Builder java无法运行java中的某些python代码。怎么解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39871474/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com