python 调用 Java 代码示例
来吧,展示:
import os
import jpype
def open_jvm():
"""开启Java虚拟机(JVM)"""
# # 获取jvm.dll 的文件路径
# jvmPath = jpype.getDefaultJVMPath()
jpype.startJVM("-ea", convertStrings=True)
def add_jars_directory(path):
"""从给定目录中导入所有jar包,路径不能有中文,必须在开启虚拟机之前"""
if os.path.isdir(path):
jpype.addClassPath(os.path.join(path, "*"))
else:
raise TypeError("不是文件夹")
def add_jar(jar_path):
"""导入某个指定路径的jar包,,必须在开启虚拟机之前"""
if os.path.isfile(jar_path) and jar_path.endswith("jar"):
jpype.addClassPath(jar_path)
else:
raise TypeError("不是jar文件")
def java_obj(class_name):
"""给定java完整类名,获取java对象"""
return jpype.JClass(class_name)
##############################################################
def send_message(cmpp_path=r'D:\cmpp',src_terminal_id="106575218526",dest_terminal_id=["17625089882"],msg_content="5128185260073",reserve="123"):
"""
需提前将config.xml文件配置好并放在文件夹下
具体是哪个文件夹可以先运行后从报错信息中获取
: @param cmpp_path 存放Cmpp.jar和smproxy_cmpp.jar的路径
: @param src_terminal_id 源终端MSISDN号码
: @param dest_terminal_id 接收业务的MSISDN号码,可以有多个
: @param msg_content 消息内容
: @param reserve 保留内容
"""
add_jars_directory(cmpp_path) # 导入jar包
print("1")
open_jvm() # 开启java虚拟机
print("2")
# 构造短信对象
CMPPSubmitMessage = java_obj("com.huawei.smproxy.comm.cmpp.message.CMPPSubmitMessage") # 2
msg = CMPPSubmitMessage(1, # @param pk_Total 相同msg_Id消息总条数
1, # @param pk_Number 相同msg_Id的消息序号
1, # @param registered_Delivery 是否要求返回状态报告
1, # @param msg_Level 信息级别
"websms", # @param service_Id 业务类型
0, # @param fee_UserType 计费用户类型字段
"", # @param fee_Terminal_Id 被计费用户的号码
0, # @param tp_Pid GSM协议类型
0, # @param tp_Udhi GSM协议类型
15, # @param msg_Fmt 消息格式 8或15
"900100", # @param msg_Src 消息内容来源
"02", # @param fee_Type 资费类别
"10", # @param fee_Code 资费代码(以分为单位)
java_obj("java.util.Date")(jpype.java.lang.System.currentTimeMillis() + 172800000),
# @param valid_Time 存活有效期
None, # @param at_Time 定时发送时间
src_terminal_id, # @param src_Terminal_Id 源终端MSISDN号码
dest_terminal_id, # @param dest_Terminal_Id 接收业务的MSISDN号码
jpype.JString(msg_content).getBytes(), # @param msg_Content 消息内容
reserve # @param reserve 保留内容
)
# 建立连接并发送短信
return java_obj("demo.cmppdemo20.WebSMSender").getInstance().send(msg)
print("开始发短信")
send_message()
print("短信发送结束")
回帖内容已被屏蔽。
厉害
就是相当于一个脚本调用了一个 jar 包吗
赞!!!