1.错误分析
一般情况下,我们都知道,在使用其他依赖的时候,我们只需要在maven中配置,比如:
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>3.0.9</version>
</dependency>
配置好之后,发现maven中无法下载,控制台出现报错,报错信息如下:
Cannot resolve com.github.wxpay:wxpay-sdk:3.0.9
而且依赖会报红,就是提醒你无法下载。之所以出现这个错误,是因为官方SDK为3.0.9版本同样也是基于maven构建,只不过没有上传到maven的公共仓库,所以导致我们无法直接下载,那么我们就可以自己动手打成jar包从而导入本地maven项目。
2.解决方案
①下载官方sdk项目
点击进入官网下载对应版本
②修改WXPayConfig文件
下载后(WxPayAPI_JAVA.zip
),先解压(java_sdk_v3.0.9
),然后使用编辑器打开java_sdk_v3.0.9
,这里以idea编辑器为例,接着找到WXPayConfig类,在WXPayConfig的抽象属性前面加上public
。原版的缺省(default)抽象属性只能在同一个package下可见,在不同package下面缺省属性是没有访问权限的,跨包必须改成公共public
属性才可以。
详情如下:
package com.github.wxpay.sdk;
import java.io.InputStream;
public abstract class WXPayConfig {
/**
* 获取 App ID
*
* @return App ID
*/
public abstract String getAppID();
/**
* 获取 Mch ID
*
* @return Mch ID
*/
public abstract String getMchID();
/**
* 获取 API 密钥
*
* @return API密钥
*/
public abstract String getKey();
/**
* 获取商户证书内容
*
* @return 商户证书内容
*/
public abstract InputStream getCertStream();
/**
* HTTP(S) 连接超时时间,单位毫秒
*
* @return
*/
public int getHttpConnectTimeoutMs() {
return 6*1000;
}
/**
* HTTP(S) 读数据超时时间,单位毫秒
*
* @return
*/
public int getHttpReadTimeoutMs() {
return 8*1000;
}
/**
* 获取WXPayDomain, 用于多域名容灾自动切换
* @return
*/
public abstract IWXPayDomain getWXPayDomain();
/**
* 是否自动上报。
* 若要关闭自动上报,子类中实现该函数返回 false 即可。
*
* @return
*/
public boolean shouldAutoReport() {
return true;
}
/**
* 进行健康上报的线程的数量
*
* @return
*/
public int getReportWorkerNum() {
return 6;
}
/**
* 健康上报缓存消息的最大数量。会有线程去独立上报
* 粗略计算:加入一条消息200B,10000消息占用空间 2000 KB,约为2MB,可以接受
*
* @return
*/
public int getReportQueueMaxSize() {
return 10000;
}
/**
* 批量上报,一次最多上报多个数据
*
* @return
*/
public int getReportBatchSize() {
return 10;
}
}
③使用maven打包
打包前先设置好jdk版本,不然打包会出现以下错误:
[ERROR] 不再支持源选项 5。请使用 6 或更高版本。
[ERROR] 不再支持目标选项 1.5。请使用 1.6 或更高版本。
具体步骤:左上角点击File->Project Structure…
以你的项目具体使用的版本为准,这里我使用的是1.8版本的,选择好之后,点击Apply,再点击OK,就完成了第一步;
接着配置maven地址,设置你本地maven仓库,
然后选择好你的本地maven仓库位置,,点击Apply,再点击OK,就完成了第二步;
最后点击package
进行打包就行了(如果你之前没有按照我的这个步骤去做,出现打包有错误的话,就要先进行clean
清理一下,反之直接package
进行打包就行了)
④安装本地jar包到本地仓库
在项目的 target 目录下找到wxpay-sdk-3.0.9.jar
,
或者打开你项目文件,找到 target 目录,也能找到wxpay-sdk-3.0.9.jar
这里建议将wxpay-sdk-3.0.9.jar
文件复制到D盘根目录下,方便后面的操作。
关键的一步来了,在D盘当前目录前输入cmd+空格,
然后回车,进入当前定位的命令窗口,
复制下面的命令(注意不要换行)到命令窗体,就会自动执行,当看到BUILD SUCCESS成功标识就大功告成了!
mvn install:install-file -Dfile=D:\wxpay-sdk-3.0.9.jar -DgroupId=com.github.wxpay -DartifactId=wxpay-sdk -Dversion=3.0.9 -Dpackaging=jar
成功示意图:
⑤在你项目的pom.xml引入wxpay-sdk依赖(已配置的这一步可以忽略)
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>3.0.9</version>
</dependency>
如果原先就配置了依赖,你会发现,之前的报红错误已经显示正常,因为本地已经下载好了。如果maven下的Dependencies下的jar包还显示红色,不用担心,直接关闭编译器,重新打开就正常了,到此99.99%的都成功了,如果还不行就点击maven窗体导航的刷新按钮,或者重新下载,清理项目缓存等,祝码到成功!!!文章来源:https://www.toymoban.com/news/detail-400816.html
文章来源地址https://www.toymoban.com/news/detail-400816.html
到了这里,关于完美解决Cannot resolve com.github.wxpay:wxpay-sdk:3.0.9报错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!