专栏首页python3python调用java API

python调用java API

使用JPype来让python调用java API。

JPype的下载地址:https://pypi.python.org/pypi/JPype1 JPype的帮助文档:http://jpype.readthedocs.io/en/latest/

1、安装:

// 如过已经安装过,请略过这两步
yum install gcc
yum install gcc-c++

// 安装python-devel , 避免报错:error: command 'gcc' failed with exit status 1
yum install python-devel 
// 至于pip的安装,请参考:http://blog.csdn.net/xlxxcc/article/details/60958604
pip install jpype1

2、测试代码:

新建test.py, 代码如下:

from jpype import *
startJVM(getDefaultJVMPath(), "-ea")
java.lang.System.out.println("Hello World")
shutdownJVM()

运行test.py,

python test.py

结果如下:

Hello World
JVM activity report     :
        classes loaded       : 31
JVM has been shutdown

3、引用jar包:

在com目录下新建文件Test.java

package com;
public class Test {
    public String run(String str){
        return str;
    }
}

编译、打包

// 编译
javac Test.java

// 打包,必须把整个目录(报名和目录名要对应)打包,否则无法访问类。
jar cvf test.jar com

python调用

jarpath = os.path.join(os.path.abspath('.'), 'libs/test.jar')
jpype.startJVM(jpype.getDefaultJVMPath(), "-ea", "-Djava.class.path=%s" % jarpath)
Test = jpype.JClass('com.Test')
# 或者通过JPackage引用Test类
# com = jpype.JPackage('com')
# Test = com.Test
t = Test()
res = t.run("a")
print res
jpype.shutdownJVM()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • centos下安装python3的方法

    在https://www.Python.org/ftp/python/下找到您所需的python版本

    用户2398817
  • python中获取python版本号的方

     最近在思考如何使用python做自动化测试的问题,没啥进展。感觉国内自动化测试ruby用的比较多,目前想做一件事就是如何用python来测试web程序,包括...

    用户2398817
  • 简单实现并发:python concur

    可以使用python 3中的concurrent模块,如果python环境是2.7的话,需要下载https://pypi.python.org/packages...

    用户2398817
  • 程序员迁移模式

    上图中红颜色标记了目前最常见的“终端节点”(所谓终端节点是人们在这里停下来因为他们找不到更好的东西)。终端节点是:Rust,Java,Go,Python 3,J...

    歪脖贰点零
  • 学习:Python之Python安装(一

          简单          易学           免费开源           高层语言           可移植性           解释性 ...

    用户2398817
  • Laravel队列使用案例

    1、配置数据库和Redis //编辑config/database.php 'mysql' => [ 'driver' => 'my...

    苦咖啡
  • ansible2.7 python3.7

    用户2398817
  • [数据结构]对链表、栈、队列的总结

    你应该发现了一些异常,为什么链表只有node的定义?再来细想一下这三种模型,我们会发现链表其实就是由节点组成的,而栈和队列我们把它视作一个容器,然后可以向里面放...

    racaljk
  • python: list型 与 np.ndarray型 切片探究

    Petrichor_
  • 如何优雅的从Array中删除一个元素

    从JavaScript数组中删除元素是开发人员经常遇到的常见编程范例。与许多JavaScript一样,这并不像它应该的那么简单。

    Jean

扫码关注云+社区

领取腾讯云代金券