python调用java基于pyjnius的封装

使用前提,需要配置好java环境以及安装jnius,如何配置java环境以及jnius的安装我就不赘述了


使用示例:

第一步配置:

PACKAGE_CONFIGS = [
    {'name': 'test', 'package': 'com.***.***'},
]

第二步引用:

import java

java.test()



下面是代码可以直接拷贝,用的是python3

"""
    auth: bear
    date: 2016-04-13
    使用说明:使用之前必须安装号jnius,在安装jnius之前一定要确定java环境已经配好
    使用这个只需要把jar包拷贝到当前文件夹下,然后配置PACKAGE_CONFIGS

   通过import就可以直接使用 例如:

     import java

     java.python中的引用名

     也可以不用java这个名字,全凭个人喜好
"""

# 若要使用新的java类都需要配置这里
PACKAGE_CONFIGS = [
    {'name': 'python中的引用名', 'package': '要导入java类必须是jar包里面有的 例如: com.***.***'},
]


import os


JAVA_INITED = False


BASE_DIR = os.path.dirname(os.path.abspath(__file__)) + '/'


def IsSubString(SubStrList, Str):
    '''
    #判断字符串Str是否包含序列SubStrList中的每一个子字符串
    #>>>SubStrList=['F','EMS','txt']
    #>>>Str='F06925EMS91.txt'
    #>>>IsSubString(SubStrList,Str)#return True (or False)
    '''
    flag = True
    for substr in SubStrList:
        if not (substr in Str):
            flag = False
    return flag




def GetFileList(FindPath, FlagStr=[]):
    '''
    #获取目录中指定的文件名
    #>>>FlagStr=['F','EMS','txt'] #要求文件名称中包含这些字符
    #>>>FileList=GetFileList(FindPath,FlagStr) #
    '''
    import os
    FileList = []
    FileNames = os.listdir(FindPath)
    if len(FileNames) > 0:
        for fn in FileNames:
            if len(FlagStr) > 0:
                # 返回指定类型的文件名
                if IsSubString(FlagStr, fn):
                    fullfilename = os.path.join(FindPath, fn)
                    FileList.append(fullfilename)
            else:
                # 默认直接返回所有文件名
                fullfilename = os.path.join(FindPath, fn)
                FileList.append(fullfilename)
    # 对文件名排序
    if len(FileList) > 0:
        FileList.sort()
    return FileList




def getjars():
    return GetFileList(BASE_DIR, ['jar'])




def __importJars():
    global JAVA_INITED
    JAVA_INITED = True
    for jar in getjars():
        add_classpath(jar)
    from jnius import autoclass
    import java
    for info in PACKAGE_CONFIGS:
        func = autoclass(info.get('package'))
        setattr(java, info.get('name'), func)




def add_classpath(path):
    """
    Appends items to the classpath for the JVM to use.
    Replaces any existing classpath, overriding the CLASSPATH environment variable.
    """
    import jnius_config
    if ':' + path in os.environ['CLASSPATH']:
        return
    # os.environ['CLASSPATH'] += ':' + path
    jnius_config.add_classpath(path)




global JAVA_INITED
if not JAVA_INITED:
    __importJars()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值