企业微信会话存档引用com.tencent.wework.Finance出错?

报错:

会话存档引用com.tencent.wework.Finance出错,找不到该类,报错如下:java.lang.NoClassDefFoundError: Could not initialize class com.tencent.wework.Finance 这个问题怎么解决?

解决方案:需要下载官方的sdk的包
https://developer.work.weixin.qq.com/document/path/91774
下载:在这里插入图片描述
本文以windows举例子
解压找到 Finance.java这个类放到 com/tencent/wework/Finance.java下面如下图
在这里插入图片描述

解压下的dll文件放到resources下也可以新建一个lib目录

在这里插入图片描述

修改Finance.java文件

在这里插入图片描述
所有代码

package com.tencent.wework;import com.andleoht.common.core.utils.OsUtils;
import lombok.extern.slf4j.Slf4j;@Slf4j
public class Finance {public native static long NewSdk();/*** 初始化函数* Return值=0表示该API调用成功** @param /[in] sdk         NewSdk返回的sdk指针* @param /[in] corpid      调用企业的企业id,例如:wwd08c8exxxx5ab44d,可以在企业微信管理端--我的企业--企业信息查看* @param /[in] secret      聊天内容存档的Secret,可以在企业微信管理端--管理工具--聊天内容存档查看* @return 返回是否初始化成功* 0   - 成功* !=0 - 失败*/public native static int Init(long sdk, String corpid, String secret);/*** 拉取聊天记录函数* Return值=0表示该API调用成功** @param /[in]  sdk             NewSdk返回的sdk指针* @param /[in]  seq             从指定的seq开始拉取消息,注意的是返回的消息从seq+1开始返回,seq为之前接口返回的最大seq值。首次使用请使用seq:0* @param /[in]  limit           一次拉取的消息条数,最大值1000条,超过1000条会返回错误* @param /[in]  proxy           使用代理的请求,需要传入代理的链接。如:socks5://10.0.0.1:8081 或者 http://10.0.0.1:8081* @param /[in]  passwd          代理账号密码,需要传入代理的账号密码。如 user_name:passwd_123* @param /[in]  timeout         超时时间,单位秒* @param /[out] chatDatas       返回本次拉取消息的数据,slice结构体.内容包括errcode/errmsg,以及每条消息内容。* @return 返回是否调用成功* 0   - 成功* !=0 - 失败*/public native static int GetChatData(long sdk, long seq, long limit, String proxy, String passwd, long timeout, long chatData);/*** 拉取媒体消息函数* Return值=0表示该API调用成功** @param /[in]  sdk             NewSdk返回的sdk指针* @param /[in]  sdkFileid       从GetChatData返回的聊天消息中,媒体消息包括的sdkfileid* @param /[in]  proxy           使用代理的请求,需要传入代理的链接。如:socks5://10.0.0.1:8081 或者 http://10.0.0.1:8081* @param /[in]  passwd          代理账号密码,需要传入代理的账号密码。如 user_name:passwd_123* @param /[in]  timeout         超时时间,单位秒* @param /[in]  indexbuf        媒体消息分片拉取,需要填入每次拉取的索引信息。首次不需要填写,默认拉取512k,后续每次调用只需要将上次调用返回的outindexbuf填入即可。* @param /[out] media_data      返回本次拉取的媒体数据.MediaData结构体.内容包括data(数据内容)/outindexbuf(下次索引)/is_finish(拉取完成标记)* @return 返回是否调用成功* 0   - 成功* !=0 - 失败*/public native static int GetMediaData(long sdk, String indexbuf, String sdkField, String proxy, String passwd, long timeout, long mediaData);/*** @param /[in]  encrypt_key, getchatdata返回的encrypt_key* @param /[in]  encrypt_msg, getchatdata返回的content* @param /[out] msg, 解密的消息明文* @return 返回是否调用成功* 0   - 成功* !=0 - 失败* @brief 解析密文*/public native static int DecryptData(long sdk, String encrypt_key, String encrypt_msg, long msg);public native static void DestroySdk(long sdk);public native static long NewSlice();/*** @return* @brief 释放slice,和NewSlice成对使用*/public native static void FreeSlice(long slice);/*** @return 内容* @brief 获取slice内容*/public native static String GetContentFromSlice(long slice);/*** @return 内容* @brief 获取slice内容长度*/public native static int GetSliceLen(long slice);public native static long NewMediaData();public native static void FreeMediaData(long mediaData);/*** @return outindex* @brief 获取mediadata outindex*/public native static String GetOutIndexBuf(long mediaData);/*** @return data* @brief 获取mediadata data数据*/public native static byte[] GetData(long mediaData);public native static int GetIndexLen(long mediaData);public native static int GetDataLen(long mediaData);/*** @return 1完成、0未完成* @brief 判断mediadata是否结束*/public native static int IsMediaDataFinish(long mediaData);static {log.info("java.library.path============={}", System.getProperty("java.library.path"));if (OsUtils.isWindows()) {String path = Finance.class.getClassLoader().getResource("").getPath();System.load(path.concat("lib/libcrypto-1_1-x64.dll"));System.load(path.concat("lib/libcurl-x64.dll"));System.load(path.concat("lib/libssl-1_1-x64.dll"));System.load(path.concat("lib/WeWorkFinanceSdk.dll"));} else {log.info("Linux library path ======linux======={} {}", System.getProperty("java.library.path"));System.loadLibrary("WeWorkFinanceSdk");}}}

这样就可以解决加载不到文件的问题了,记得重新builder

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/3033.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【前端基础】盒子模型

目标&#xff1a;掌握盒子模型组成部分&#xff0c;使用盒子模型布局网页区域 01-选择器 结构伪类选择器 基本使用 作用&#xff1a;根据元素的结构关系查找元素。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">…

鸿蒙开发:ArkUI Toggle 组件

ArkUI提供了一套完整的UI开发工具集&#xff0c;帮助开发者高效完成页面的开发。它融合了语言、编译器、图形构建等关键的应用UI开发底座&#xff0c;为应用的UI开发提供了完整的基础设施&#xff0c;包括简洁的UI语法、丰富的UI功能以及实时界面预览工具等&#xff0c;可以支持…

【LeetCode每日一题】——802.找到最终的安全状态

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 图 二【题目难度】 中等 三【题目编号】 802.找到最终的安全状态 四【题目描述】 有一个有…

安利一款开源企业级的报表系统SpringReport

SpringReport是一款企业级的报表系统&#xff0c;支持在线设计报表&#xff0c;并绑定动态数据源&#xff0c;无需写代码即可快速生成想要的报表&#xff0c;可以支持excel报表和word报表两种格式&#xff0c;同时还可以支持excel多人协同编辑&#xff0c;后续考虑实现大屏设计…

考公人数攀升?地信、测绘、地质、遥感等专业,能报考哪些单位

近年来&#xff0c;考公人数持续飙升&#xff0c;国考报名人数更逐年攀升。2025年国家公务员考试共有341.6万人通过资格审查&#xff0c;报录比达86:1。国考报名人数再创新高。 国家公务员考试时间安排 地理学相关岗位分析 地信属于地理科学类&#xff0c;测绘类中不包括地信&…

LabVIEW 离心泵机组故障诊断系统

开发了一套基于LabVIEW图形化编程语言设计的离心泵机组故障诊断系统。系统利用先进的数据采集技术和故障诊断方法&#xff0c;通过远程在线监测与分析&#xff0c;有效提升了离心泵的预测性维护能力&#xff0c;保证了石油化工生产的连续性和安全性。 项目背景及意义 离心泵作…

YOLOv10改进策略【卷积层】| CVPR-2023 SCConv 空间和通道重建卷积:即插即用,减少冗余计算并提升特征学习

一、本文介绍 本文记录的是利用ScConv优化YOLOv10的目标检测网络模型。深度神经网络中存在大量冗余&#xff0c;不仅在密集模型参数中&#xff0c;而且在特征图的空间和通道维度中。ScConv模块通过联合减少卷积层中空间和通道的冗余&#xff0c;有效地限制了特征冗余&#xff…

Linux 文件系统权限

文件的一般权限 文件详细信息 使用命令 ll 或 ls -l 查看 文件权限构成 权限针对三类对象定义 owner &#xff1a;所有者&#xff0c;缩写 u group &#xff1a;所属组&#xff0c;缩写 g other &#xff1a;其他人&#xff0c;缩写 o 访问者三种权限 组成模式分析 …

C++上机实验|多态性编程练习

1.实验目的 (1)理解多态性的概念。 (2)掌握如何用虚函数实现动态联编 (3)掌握如何利用虚基类。 2.实验内容 设计一个飞机类 plane,由它派生出歼击机类fighter和轰炸机类 bomber,歼击机类fighter 和轰炸机类bomber 又共同派生出歼轰机(多用途战斗机)。利用虚函数和虚基类描述…

学习threejs,使用对象组合

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.Object3D 三维物体 二…

遇到的问题

刚遇到的问题&#xff1a; 一直以为这个图片数据结构是以下这种&#xff1a; {"descrlong1": [{"CL04": "人力违纪"},{"CL05": "其他"}], }其实数据结构是&#xff1a; {"descrlong1": [{"key": &quo…

发现8个高风险漏洞 NVIDIA GeForce用户必须更新GPU驱动程序

所有NVIDIA GeForce图形处理器都面临着高风险&#xff0c;因为该公司在其图形处理器驱动程序中发现了几个漏洞&#xff0c;这些漏洞可能会让黑客利用你的系统。公司敦促用户更新到最新的GeForce显示屏和VGPU驱动程序&#xff0c;以确保他们的系统不受任何漏洞的影响。 NVIDIA在…

Redis 中 Bitmap 原理和应用

Bitmap Redis中的Bitmap&#xff08;位图&#xff09;是一种较为特殊数据类型&#xff0c;它以最小单位bit来存储数据&#xff0c;我们知道一个字节由 8个 bit 组成&#xff0c;和传统数据结构用字节存储相比&#xff0c;这使得它在处理大量二值状态&#xff08;true、false 或…

微信小程序开发,诗词鉴赏app

文章目录 1. 项目功能思维导图2. 项目涉及到的技术点3. 开发环境4. 项目运行效果5. 部分功能实现6. 关于本人其它项目的介绍 1. 项目功能思维导图 2. 项目涉及到的技术点 使用MySQL数据库实现数据存储使用setInterval实现启动页3s倒计时使用storage实现数据持久化存储&#xf…

什么是阿里云上的主机安全服务?

在数字化时代&#xff0c;数据安全和网络安全成为了企业最关心的问题之一。随着越来越多的企业将业务迁移至云端&#xff0c;如何确保云环境的安全性&#xff0c;成为了企业必须面对的重要挑战。阿里云安全中心&#xff08;SAS&#xff09;作为一款全面的云安全解决方案&#x…

在K8s平台部署个人博客

在K8s平台部署个人博客 实验步骤查看wordpress前端的service配置word press 实验步骤 kubectl create secret generic mysql-pass --from-literalpasswordYOUR_PASSWORD把mysql.tar.gz和wordpress.tar.gz上传到K8s工作节点&#xff0c;手动解压即可&#xff1a; 通过网盘分享的…

【原创】java+ssm+mysql收纳培训网系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

Java | Leetcode Java题解之第523题连续的子数组和

题目&#xff1a; 题解&#xff1a; class Solution {public boolean checkSubarraySum(int[] nums, int k) {int m nums.length;if (m < 2) {return false;}Map<Integer, Integer> map new HashMap<Integer, Integer>();map.put(0, -1);int remainder 0;fo…

【时间之外】IT人求职和创业应知【27】

目录 新闻一物理智能公司完成4亿美元融资 新闻二A股IPO和再融资受理、审核回暖 新闻三AI流量变现财富峰会举办 认知和思考决定了你的赚钱能力。以下是今天可能引起你思考的热点新闻&#xff1a; 今日关键字&#xff1a;没吃过猪肉&#xff0c;还没见过猪跑吗&#xff1f; 新…

【前端开发入门】JavaScript快速入门--函数技巧

目录 引言一、函数基本注意事项1. 函数定义2. 默认参数3. 函数返回值及闭包3.1 举个函数返回值的简单例子3.2 当我需要利用函数内部变量做一些运算时&#xff0c;就需要使用js的闭包 二、函数注释1. 单行注释2. 多行注释3. 进阶玩法 三、总结 引言 本系列教程旨在帮助一些零基础…