`
javahigh1
  • 浏览: 1273699 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Python桥接Java工具JPype

 
阅读更多

JPype这玩意可以桥接Java,在Python中调用Java的类,比较好用,对外接口不多,不过需要注意的是python和java类型匹配的问题.可以参考官方文档

http://jpype.sourceforge.net/doc/user-guide/userguide.html

过程中遇到个小问题,设置classpath时,-D前面留了一个空格,导致始终找不到类的错误,很坑爹。

jvmArg = "-Djava.class.path=%s" % ext_classpath
jpype.startJVM(jvmpath,jvmArg)


JPype defines different leels of "match" between Python objects and Java types. These levels are :

  • none, There is no way to convert.
  • explicit (E), JPype canconvert ot the desired type, but only explicitly via the wrapper classes. This means the proper wrapper class will access this type as argument.
  • implicit (I), JPype will convert as needed.
  • exact> (X), Like implicit, but when deciding with method overload to use, one wj=here all the paramters match "exact" will take precedence over "implicit" matches.

byte
short
int
long
float
double
boolean
char
String
Array
Object
Class
int long float sequence dictionary string unicode JByte JShort JInt JLong JFloat JDouble JBoolean JString JChar JArray JObject JavaObject JavaClass
I (1)
I (1)
X
I
X (10)
I (1)
I (1)
I (1)
X
I (1)
X
I (2)
X
I (2)
X
X
X
X
X
X
X
X
X
I (3)
X
I/X (4)
I (5)
I/X (6)
I/X (7)
I (8)
I (9)
X

(1) Conversion will occur if the Python value fits in the java native type.

(2) Conversion occurs if the python string or unicode is of length 1

(3) The required object must be of a type compatible with java.lang.String (java.lang.Object, java.util.Comparable)

(4) Number of dimensions must match, and the types must be compatible

(5) Only when the required type is java.lang.Object

(6) Only if the JObject wrapper's specified type is an compatible array class.

(7) Only if the required type is compatible with the wrappers's specified type. The actual type of the java object is not considered.

(8) Only if the requireds type is compatible with the Java Object actual type.

(9) Only when the required type is java.lang.Object or java.lang.Class

(10) only the values True and False are implitly converted to booleans.

Converting from java to python

The rules here are much simpler.

Java byte, short and int are converted to python int.

Java long are conversion to Python long

Java float and double are converted to python float.

Java boolean are converted to python int of value 1 or 0

Java char are converted to python unicode of length 1.

Java String are converteds to python unicode.

Java arrays are converteds to JArray

All other java object are converted to JavaObject.

Java Class are converted to JavaClass.

Java array Class are converted to JavaArrayClass.



分享到:
评论

相关推荐

    Python库 | JPype1-1.1.1-cp35-cp35m-manylinux1_x86_64.whl

    JPype的核心功能在于它的互操作性,它实现了Python与Java之间的桥接,使得Python可以调用Java的方法,创建Java对象,甚至可以处理Java集合和异常。这对于那些需要利用Java库,如大数据处理框架Hadoop、机器学习库...

    jpype for python 2.4

    JPype创建了一个桥接,允许Python解释器直接与Java虚拟机(JVM)通信。这使得Python开发者可以利用Java的高性能计算能力、企业级库,以及Android开发等领域的资源。使用JPype,Python代码可以创建Java对象,调用其...

    jpype-0.6.3

    **描述:**JPype是Python与Java交互的一个关键工具,它使得Python程序员能够无缝地利用Java库和框架,弥补了Python在特定场景下的局限性,比如在服务器端编程或者需要高性能计算时。通过JPype,开发者可以轻松地将...

    jpype34位和64位下载

    【标题】:“jpype34位和64位下载”涉及到的是Java与Python之间的互操作性工具——JPype。JPype是一种开源库,它允许Java和Python代码在同一个进程中无缝交互,使得Python开发者能够利用Java丰富的类库和框架。本文...

    jpype-34位和64位

    "jpype" 是一个关键标签,它是一个Java-Python桥接库,允许Python程序与Java代码交互。它使得Python开发者能够调用Java类库,利用Java平台的功能,如大数据处理、科学计算或者利用已有的Java库,同时保持Python的...

    Python RocketMQ

    然而,根据提供的描述,这里使用的是`jpype1`,这是一个用于在Python中运行Java代码的库,它使得Python可以调用Java的RocketMQ客户端。首先,你需要在你的项目环境中安装`jpype1`,可以使用以下命令: ```bash pip ...

    个人python

    该库为Python提供了一个桥接层,使得Python能够调用Java虚拟机(JVM)中的类和方法。这在某些场景下非常有用,比如需要利用Java平台的强大功能但又想保持主程序的灵活性和易用性时。 #### 二、设置环境 为了能够在...

    jaydebeapi-1.2.3 jpype1-0.7.1

    `jpype1`是一个Python到Java的桥接库,它使Python能够调用Java类库,包括JDBC驱动。在上述的`jaydebeapi`示例中,如果JDBC驱动是Java的,那么`jpype1`就派上用场了,它使得在Python中直接使用Java类成为可能。不过,...

    JayDeBeApi-0.1.6.tar.gz及依赖包JPype1-0.6.3.tar.gz(win64)

    `JayDeBeApi`的工作原理是通过Java的桥接机制,让Python能够调用Java的JDBC API,从而实现跨语言的数据操作。 接下来,我们来看看`JPype1-0.6.3`。这个库是Python与Java平台之间的一个桥梁,它允许Python代码直接...

    Python库 | ha_JayDeBeApi-2.1.6.tar.gz

    `JayDeBeApi`主要负责处理Java桥接过程,使得Python代码能够调用JDBC驱动,进而与各种数据库进行通信。 **2. 安装与依赖** 要安装`JayDeBeApi`,你可以使用Python的包管理工具`pip`,命令如下: ```bash pip ...

    基于python使用tibco ems代码实例

    在代码实例中,首先需要导入JPype库,这是Python和Java交互的一个桥接库。JPype允许Python程序调用Java代码,并使用Java类库。在使用JPype之前,必须指定Java虚拟机的路径和Java类路径。代码中通过设置环境变量`...

Global site tag (gtag.js) - Google Analytics