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窗体导航的刷新按钮,或者重新下载,清理项目缓存等,祝码到成功!!!

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐