如何调用网页代码在Java中调用Python代码

使用JPype实现Python调用JAVA程序 - 小鸡啄米 - ITeye技术网站
博客分类:
Ubuntu下环境的配置
1,安装JDK
首先安装java的jdk,我是从新立得软件包中安装:
sudo apt-get install sun-java6-jdk
(jdk的版本取决于你的ubuntu版本)
安装后的jdk的目录是:/usr/lib/jvm/java-6-sun-1.6.0.26/。安装好jdk后,最重要的就是配置环境变量。环境变量的配置有好几种方法,能设置环境变量的文件包括:/etc/profile、/etc/evironment
、~/.profile、/bashrc、~/.bashrc。这几个文件里定义的环境变量,用户使用的权限和执行的时间不一样。在/etc/environment文件里定义jdk环境变量。在该文件中添加:
JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26
CLASSPATH=.:/usr/lib/jvm/java-6-sun-1.6.0.26/lib
(CLASSPATH以冒号分隔开。.
号表示当前目录)
然后在~/.bashrc文件中添加:
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26
export CLASSPATH=.:$JAVA_HOME/lib
因为ubuntu默认安装了OPENJDK所以要选择所用的JDK执行下面两条命令:
update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-6-sun-1.6.0.26/bin/java 300
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-6-sun-1.6.0.26/bin/javac 300
这样安装的java就可以加入java选单。再调用下面的命令就可以选择java的版本了。
update-alternatives --config java
在终端测试一下吧!到此jdk就安装完成了。
2.安装Jpype
从官网上下载JPype。在unbuntu下安装还需要做点小修改,修改setup.py,文件中setupLinux函数中的self.javaHome变量为自己的JDK目录:
self.javahome='usr/lib/jvm/java-6-sun-1.6.0.26‘
运行python
setup.py install.的话
可能会出现找不到Python.py。需要安装python-dev。如果再安装出错的话,就需要你自己排错了。当然你在安装JPype之前必须安装好Python。测试一下在终端中打开python
shell,import
Jpype。无错表示安装成功。
python调用java
写个很简单的java程序并打包成jar包供python程序调用。
简单的java程序:
public class TestApi
public String getData(String key){
public void printData(String key){
System.out.println(key);
public static void main(String[] args)
System.out.println(123);
编译成.class文件:
javac TestApi.java
将.class文件放入test文件夹中,在test文件夹外新建一个.mf文件,就叫TestApi.mf吧。并在该文件中加入:
Created-By: Jesse Main-Class: test.TestApi
Main-Class指的就是主程序的入口类,利用下列指令打包jar文件:
jar cvfm TestApi.jar TestApi.mf test
到此,java的包文件已经完成,下面就测试JPype吧:
#!/usr/bin/env python
#coding : utf-8
from jpype import *
jvmpath = getDefaultJVMPath()
startJVM(jvmpath, "-ea", "-Djava.class.path=.")
TA = JPackage('test').TestApi
jd.printData('1234')
s = jd.getData('a')
shutdownJVM();
浏览 14896
浏览: 24436 次
来自: 上海
增加刻度盘与时间的数值显示:
require 'observe ...
上文中的 getPointAngle 函数有错误, “90.0 ...
这确实是个很好的观察者设计模式的范例!对程序优化及简化如下:只 ...汇总java调用python方法
作者:xingjiarong
字体:[ ] 类型:转载 时间:
这篇文章主要为大家详细介绍了java调用python的方法,文章中介绍了三种java调用python方法,感兴趣的朋友可以参考一下
本文为大家分享了java调用python方法,供大家参考,具体内容如下
一、在java类中直接执行python语句
import org.python.util.PythonI
public class FirstJavaScript {
public static void main(String args[]) {
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); ");
interpreter.exec("print days[1];");
调用的结果是Tue,在控制台显示出来,这是直接进行调用的。
二、在java中调用本机python脚本中的函数
首先建立一个python脚本,名字为:my_utils.py
def adder(a, b):
return a + b
然后建立一个java类,用来测试,
java类代码 FirstJavaScript:
import org.python.core.PyF
import org.python.core.PyI
import org.python.core.PyO
import org.python.util.PythonI
public class FirstJavaScript {
public static void main(String args[]) {
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("C:\\Python27\\programs\\my_utils.py");
PyFunction func = (PyFunction) interpreter.get("adder",
PyFunction.class);
int a = 2010, b = 2;
PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b));
System.out.println("anwser = " + pyobj.toString());
得到的结果是:anwser = 2012
三、使用java直接执行python脚本
建立脚本inputpy
#open files
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)
建立java类,调用这个脚本:
import org.python.util.PythonI
public class FirstJavaScript {
public static void main(String args[]) {
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("C:\\Python27\\programs\\input.py");
得到的结果是:
[3, 5, 2, 0, 6]
[0, 2, 3, 5, 6]
[0, 2, 3, 5, 6, 0]
以上就是三种java调用python方法,希望对大家的学习有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具您所在的位置: &
如何使用Python访问Java类
如何使用Python访问Java类
很高兴给大家介绍一个 Pyjnius 项目。这是一个可以使用在桌面或Android上,用来访问Java类的Python库。
很高兴给大家介绍一个
项目。这是一个可以使用在桌面或Android上,用来访问Java类的Python库。
也有其他一些的库,如
,它们在设计和可用性方面都不是很好。而使用 也不为另一种选择,因为我们想使用 项目。
现在就让我来告诉你,如何简单的使用Pyjnius:
&&&&from&jnius&import&autoclass &&&&&Stack&=&autoclass('java.util.Stack') &&&&&stack&=&Stack() &&&&&stack.push('hello') &&&&&stack.push('world') &&&&&stack.pop() &'world'&&&&&stack.pop() &'hello'&
上面的代码中,我们使用 函数,创建了一个类型代理,对应着Java中java.util.Stack类的所有方法和字段属性。
OK,也许你想要一个Android相关的例子,看这里:
from&jnius&import&autoclass &from&time&import&sleep && &MediaRecorder&=&autoclass('android.media.MediaRecorder') &AudioSource&=&autoclass('android.media.MediaRecorder$AudioSource') &OutputFormat&=&autoclass('android.media.MediaRecorder$OutputFormat') &AudioEncoder&=&autoclass('android.media.MediaRecorder$AudioEncoder') && &&mRecorder&=&MediaRecorder() &mRecorder.setAudioSource(AudioSource.MIC) &mRecorder.setOutputFormat(OutputFormat.THREE_GPP) &mRecorder.setOutputFile('/sdcard/testrecorder.3gp') &mRecorder.setAudioEncoder(AudioEncoder.ARM_NB) &mRecorder.prepare() && &&mRecorder.start() &sleep(5) &mRecorder.stop() &mRecorder.release()&
好了,你可以从文档中获取更多的例子。
我们已经可以映射Java/Python的类型,原生数组,支持方法重载等等。我们在内部使用的是
+ ,因此消耗性能是最小的。
同时, 库已经完成,你可以从github中获取。
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
又是一周匆匆而过。上周五、周六两天,2013年51CTO云计算架构师
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
Hadoop Summit 2013 大会讲师 PPT 第二季重磅来袭!如
现在这天气到处都是高温,还是老老实实的呆在家里上网
、27日,在美国圣何塞举行的Hadoop Summit
本书以轻松幽默的笔调向读者论述了高质量软件开发方法与C++/C编程规范。它是作者多年从事软件开发工作的经验总结。本书共17章,
51CTO旗下网站2117人阅读
Python语言(6)
Java语言(7)
使用Runtime.getRuntime()执行脚本文件,这种方式和.net下面调用cmd执行命令的方式类似。如果执行的python脚本有引用第三方包的,建议使用此种方式。
Process proc = Runtime.getRuntime().exec(&python
D:\\demo.py&);
proc.waitFor();
Java调用代码:
import java.io.BufferedR
import java.io.InputStreamR
public class Test5 {
public static void main(String[] args){
System.out.println(&start&);
Process pr = Runtime.getRuntime().exec(&d:\\python27\\python.exe test.py&);
BufferedReader in = new BufferedReader(new
InputStreamReader(pr.getInputStream()));
while ((line = in.readLine()) != null) {
System.out.println(line);
in.close();
pr.waitFor();
System.out.println(&end&);
} catch (Exception e){
e.printStackTrace();
test.py的文件内容为:
import sys
import urllib
print &hello&
print sys.path
java程序运行的结果为:
['D:\\eclipse_jee_workspace\\ZLabTest', 'C:\\Windows\\system32\\python27.zip', 'D:\\Python27\\DLLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\\plat-win', 'D:\\Python27\\lib\\lib-tk', 'D:\\Python27', 'D:\\Python27\\lib\\site-packages']
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:63811次
排名:千里之外
原创:17篇
转载:26篇
(5)(1)(5)(1)(12)(12)(5)(3)第三方登录:

我要回帖

更多关于 如何调用js代码 的文章

 

随机推荐