使用前提,需要配置好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()