企业微信会话存档功能所需的sdk在不同环境下的存放位置是不一样的,且在Windows环境下打包的sdk文件并不会被maven打包,且由于sdk的不同,在不同的环境下测试需要使用不同的Finance类,即使用不同的Finance静态代码块,所以对Finance类的静态代码块进行了修改。
首先,通过System.getProperty(“os.name”) 获取当前操作系统名称,并选用不同的sdk:
String os = System.getProperty("os.name");
if (os.indexOf("Win")!=-1) {
System.loadLibrary("WeWorkFinanceSdk"); //Windows环境
}else if (os.indexOf("Linux")!=-1) {
System.loadLibrary("WeWorkFinanceSdk_Java"); //linux环境
}
企业微信的开发案例sdk是直接放在项目下的,但由于maven打包默认不会打包dll文件或so文件,而System.loadLibrary方法加载库文件的路径在系统中是可以获取的,所以我们可以加sdk直接放到其加载的库文件的路径中去,这样就不要将sdk放到项目内了,只需要将sdk放到库文件加载路径中去就好,这里呢,由于偷了个小懒,将库文件加载路径打印了出来,直接将sdk复制到了该路径下,可以的话,可以将库文件放到项目内,读取到对应的库文件加载路径,通过文件流操作的方式将其复制或者移动进去,偷懒代码:
try {
String os = System.getProperty("os.name");
if (os.indexOf("Win")!=-1) {
System.loadLibrary("WeWorkFinanceSdk"); //Windows环境
}else if (os.indexOf("Linux")!=-1) {
System.loadLibrary("WeWorkFinanceSdk_Java"); //linux环境
}
} catch (Exception e) {
e.printStackTrace();
System.out.println(System.getProperty("java.library.path"));
//获取到对应的库文件路径,将sdk复制或移动进去,重新加载,此处代码偷懒
}
catch打印的路径有多个,只需将sdk复制到其中一个路径就好。