Unity 引入maven https链接的报错问题

Posted XR风云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 引入maven https链接的报错问题相关的知识,希望对你有一定的参考价值。

我们在Unity引入自定义aar库,aar库又依赖其他第三方库,如何破?_XR风云的博客-CSDN博客_aar中包含第三方库

这里已经知道怎样Unity中配置第三方库的方法。最近公司了为了安全的问题,把maven的地址由http改为https了,改成https之后就出现问题了。

allprojects

   repositories

                   maven url 'https://xxxx.yyy.com/artifactory/ '

      google()

      jcenter()

      flatDir

        dirs 'libs'

     

  

就开始报如下错误:

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath

解决方案:

1、获取得到证书

在浏览器中输入maven地址,然后点击锁标志,然后在点击连接上安全的

 

然后在点击证书有效

 

然后点击导出所选证书

 

2、导入到Unity版本的JDK中

首先我们找到我们当前使用的JDK版本,打开Unity Editor,点击Edit->Preferences->External Tools, 我们可以JDK Install Path,我们Copy Path,获取得到JDK目录。

进入bin目录,执行以下命令:

keytool -import -alias cacerts -keystore “C:\\Program Files\\Unity\\Hub\\Editor\\2020.3.35f1\\Editor\\Data\\PlaybackEngines\\androidPlayer\\OpenJDK\\jre\\lib\\security\\cacerts” -file maven_cloudartifact.cer

-keystore后面是jdk中的cacerts的文件路径,-file 后面是上一步中获取得到的文件。

注意,cmd命令需要使用管理员权限打开的。

输入密钥库口令: changeit

是否信任此证书? [否]:  y

出现:证书已添加到密钥库中 才算正式输入成功。

关于maven打包时的报错: Return code is: 501 , ReasonPhrase:HTTPS Required.

今天使用jenkins构建时,报以下错误

  [ERROR] Failed to execute goal on project saas20: Could not resolve dependencies for project com.ipower365.saas:saas20:war:0.0.1-SNAPSHOT: Failed to collect dependencies at com.ipower365.saas:messageserviceimpl:jar:0.0.1-SNAPSHOT -> com.ipower365.boss:nacha:jar:1.0.1: Failed to read artifact descriptor for com.ipower365.boss:nacha:jar:1.0.1: Could not transfer artifact com.ipower365.boss:nacha:pom:1.0.1 from/to central (http://repo1.maven.org/maven2/): Failed to transfer file: http://repo1.maven.org/maven2/com/ipower365/boss/nacha/1.0.1/nacha-1.0.1.pom. Return code is: 501 , ReasonPhrase:HTTPS Required. -> [Help 1]

  我们发现,这个依赖的文件在本地仓库是有的,但是在构建过程中,在本地nexus下载完文件后,还是会像中央仓库请求文件下载

    [echoing saas20] Downloading from central: http://repo1.maven.org/maven2/com/ipower365/boss/nacha/1.0.1/nacha-1.0.1.pom

  之后我们根据返回的501错误,去搜索问题,参考链接如下:

  https://stackoverflow.com/questions/59763531/maven-dependencies-are-failing-with-501-error

 

 

   上面提示,自2020年1月15日起,中央存储库不再支持通过纯HTTP进行的不安全通信,并且要求对存储库的所有请求都通过HTTPS进行加密。

  于是我们在构建过程中所依赖的settings文件中,加入了一以下配置:

<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>https://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>

  但是问题依然没有解决,接着报错,错误如下:

    Could not transfer artifact com.ipower365.boss:nacha:pom:1.0.1 from/to central (https://repo1.maven.org/maven2/): Received fatal alert: protocol_version -> [Help 1]

  这个是在使用https协议请求中央仓库时,需要指定协议版本,然后在构建时,加入了如下参数,参考链接如下: 

    https://stackoverflow.com/questions/50824789/why-am-i-getting-received-fatal-alert-protocol-version-or-peer-not-authentic  

-Dhttps.protocols=TLSv1.2

  然后再次构建时,就通过请求了!

原因:我们Java环境用的是7和8两种,而我们的mvn版本用的是3.5.x。

    所以,在JAVA8环境使用mvn打包时,不需要指定以上参数,但是使用JAVA7环境的时候,则会出现以上报错。后面会考虑更新下mvn的版本及统一JAVA环境

以上是关于Unity 引入maven https链接的报错问题的主要内容,如果未能解决你的问题,请参考以下文章

Unity中常见的报错类型

maven项目(引入依赖失败, pom.xml 报错爆红)

解决maven的报错

项目中的报错信息,maven报错等的总结

vue的data中使用this.$route赋值,在this.$options.data()重置的时候报错问的题

Maven 项目打包及启动时的报错解决