导航:首页 > 编程语言 > python启动jar脚本

python启动jar脚本

发布时间:2023-06-16 17:27:38

java调用python,有第三方包gensim,怎么调用呢,是报错。求教....

Jython(原JPython),是一个用Java语言写的Python解释器。

在没有第三方模块的情况下,通常选择利用Jython来调用Python代码,

它是一个开源的JAR包,你可以到官网下载

一个HelloPython程序

importorg.python.util.PythonInterpreter;

publicclassHelloPython{

publicstaticvoidmain(String[]args){

PythonInterpreterinterpreter=newPythonInterpreter();

interpreter.exec("print('hello')");

}

}

什么是PythonInterpreter?它的中文意思即是“Python解释器”。我们知道Python程序都是通过解释器来执行的,我们在Java中创建一个“解释器”对象,模拟Python解释器的行为,通过exec("Python语句")直接在JVM中执行Python代码,上面代码的输出结果为:hello

在Jvm中执行Python脚本

interpreter.execfile("D:/labs/mytest/hello.py");

如上,将exec改为execfile就可以了。需要注意的是,这个.py文件不能含有第三方模块,因为这个“Python脚本”最终还是在JVM环境下执行的,如果有第三方模块将会报错:javaImportError:Nomolenamedxxx

仅在Java中调用Python编写的函数

先完成一个hello.py代码:

defhello():

return'Hello'

在Java代码中调用这个函数:

importorg.python.core.PyFunction;

importorg.python.core.PyObject;

importorg.python.util.PythonInterpreter;

publicclassHelloPython{

publicstaticvoidmain(String[]args){

PythonInterpreterinterpreter=newPythonInterpreter();

interpreter.execfile("D:/labs/hello.py");

PyFunctionpyFunction=interpreter.get("hello",PyFunction.class);//第一个参数为期望获得的函数(变量)的名字,第二个参数为期望返回的对象类型

PyObjectpyObject=pyFunction.__call__();//调用函数

System.out.println(pyObject);

}

}

上面的代码执行结果为:Hello

即便只是调用一个函数,也必须先加载这个.py文件,之后再通过Jython包中所定义的类获取、调用这个函数。

如果函数需要参数,在Java中必须先将参数转化为对应的“Python类型”,例如:

__call__(newPyInteger(a),newPyInteger(b))

a,b的类型为Java中的int型,还有诸如:PyString(Stringstring)、PyList(Iterator<PyObject>iter)等。

详细可以参考官方的api文档。

包含第三方模块的情况:一个手写识别程序

这是我和舍友合作写的一个小程序,完整代码在这里:

,界面上引用了corejava上的一段代码。Python代码是舍友写的,因为在Python程序中使用了第三方的NumPy模块,导致无法通过Jython执行。下面这个方法纯粹是个人思路,没有深入查资料。核心代码如下:

importjava.io.*;

classPyCaller{

privatestaticfinalStringDATA_SWAP="temp.txt";

privatestaticfinalStringPY_URL=System.getProperty("user.dir")+"\test.py";

(Stringpath){

PrintWriterpw=null;

try{

pw=newPrintWriter(newFileWriter(newFile(DATA_SWAP)));

}catch(IOExceptione){

e.printStackTrace();

}

pw.print(path);

pw.close();

}

publicstaticStringreadAnswer(){

BufferedReaderbr;

Stringanswer=null;

try{

br=newBufferedReader(newFileReader(newFile(DATA_SWAP)));

answer=br.readLine();

}catch(FileNotFoundExceptione){

e.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}

returnanswer;

}

publicstaticvoidexecPy(){

Processproc=null;

try{

proc=Runtime.getRuntime().exec("python"+PY_URL);

proc.waitFor();

}catch(IOExceptione){

e.printStackTrace();

}catch(InterruptedExceptione){

e.printStackTrace();

}

}

//测试码

publicstaticvoidmain(String[]args)throwsIOException,InterruptedException{

writeImagePath("D:\labs\mytest\test.jpg");

execPy();

System.out.println(readAnswer());

}

}

实际上就是通过Java执行一个命令行指令。

⑵ python 需要调用 /shell/目录下的run.sh。在脚本中调用的是一个jar包,jar包可

我用的spss版本是22.0,也是最近为了使用SPSS Python Essentials才安装的这个版本,大家可以参考这篇文章,以便正确安装spss 22.0。
安装好了spss22.0以后,如果你按照上面的安装教程进行的安装,SPSS Python Essentials就自动的安装在了你的spss22.0的安装目录下。接下来我们要进行必要的设置。
打开spss22的界面,打开编辑菜单下的【选项】
切换到脚本选项下,我们设置一下缺省脚本语言为python,点击【应用】
切换到【文件位置】选项下,设置python的位置,我们有两个选项,一个是随IBM SPSS安装的位置,这就是说,spss22在安装的时候自动安装了python2.7,如果我们想要使用这个python,就选择第一个选项;但是我现在有一个更好的建议,使用我们自己安装的python,也就是说在安装spss之前就有一个python安装好了,我现在想使用这个python,我们可以设置python的其他安装,然后找到这个python安装的目录,最后点击确定就可以了。为什么我建议使用第二种选择呢?因为我的python下有很多安装好的扩展包,需要在处理数据的时候调用,以后安装新的扩展包也很方便。如果使用是、随spss安装的python,还需要另行安装这些扩展包
设置完成以后,我们想要启动python的编辑窗口,需要在开始菜单中启动,如图所示。不能直接从python的安装目录里启动。
另外,spss22还有一个bug,我们虽然设置了Python的主目录,但是在新建脚本的时候,还是用的随spss安装的python的shell。所以想要使用python脚本,你就从上面那个方面里启动python shell
原作者:Delta数据工作室

⑶ python调用jar包加密时,json的引号未加密

json就是个字符串 。就算各种语言提供了json相关的依赖包 ,那还是可以转换为字符串,既然是字符串 、哪加密就不是问题了吧,转回来先解密然后再转json对象 。

⑷ 怎么使用java运行python脚本

如果是jython,也就是运行在Jvm上的python的话,可以使用JSR223,JDK1.6已经包含了该扩展包。JSR223是一个用于解析多种脚本语言的库包,其中包括Jython。除了JSR223包之外,还需要jython-engine.jar包。
ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");
try
{
engine.eval(new FileReader("./script/listing.py"));
}
catch(ScriptException se)
{
}
catch(IOException ie)
{
}
或者参考:http://www.360doc.com/content/10/0608/23/1404822_32043230.shtml
很久之前用过ScriptEngine,对在Jvm上的脚本语言比如jruby,jython,groovy等支持性都很好,有点忘记了。

阅读全文

与python启动jar脚本相关的资料

热点内容
书本文件夹夹子怎么安 浏览:801
如何更改编译器的背景 浏览:84
linuxcp拷贝文件 浏览:608
我的世界如何屏蔽别人服务器 浏览:907
单片机烧录员 浏览:970
美国数据服务器可以部署什么业务 浏览:973
如何卸载服务器中的ie 浏览:42
单片机必须学编程吗 浏览:153
如何判断是否与服务器连接数据库 浏览:740
吃甜食会缓解压力嘛 浏览:317
pdf魔鬼 浏览:29
二维数组递归解决算法问题 浏览:382
java反射例子 浏览:670
惠普笔记本自带解压软件 浏览:840
抖音视频后台压缩 浏览:707
app里的视频广告从哪里接的 浏览:556
天翼云服务器跟腾讯云 浏览:618
cyk算法实现 浏览:191
大潘号app在哪里可以下载 浏览:109
怎么做解压豌豆捏捏乐 浏览:618