欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

解决IDEA无法读取maven镜像,jar包下载失败的问题

时间:2021-03-12 09:53:19|栏目:JAVA代码|点击:

最近从公司私服下载jar包一直失败,之前的解决方法是手动下载项目,自己打包来解决的,最近忍无可忍,自己研究了o(?i?n?i)o.

原因

idea现在的版本要求maven的镜像必须是https的,而之前的配置的镜像都是http的,所以镜像加载失败了,读取的是maven默认的仓库,所以下不下来.

我为什么要手贱升级,明明18年版的也可以用的o(?i?n?i)o

解决

设置https库

国内的镜像基本都有https版本了(公司的就要公司自己配置了),设置一下

  <!--阿里仓库-->
  <mirror>
   <id>alimaven</id>
   <name>aliyun maven</name>
   <url>https://maven.aliyun.com/repository/public/</url>
   <mirrorOf>central</mirrorOf>
  </mirror>
  <mirror>
   <id>huaweicloud</id>
   <mirrorOf>*</mirrorOf>
   <url>https://mirrors.huaweicloud.com/repository/maven/</url>
  </mirror>

再到默认的maven设置中为VM添加

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

在项目中强制导入

公司的项目使用公司的私服,而又没有配置https的话,就要自己处理一下了.

在项目的pom中添加地址

  <repositories>
    <repository>
      <id>nexus</id>
      <name>nexus</name>
      <url>http://xxxxx/content/groups/public/</url> <!--私服地址-->
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

清理settings.xml中的镜像地址

不知道什么原因,虽然配置了上面的,但是我settings.xml的配置还会影响,必须将里面的自定义的镜像全部清理掉

此时刷新maven,就能从在pom配置的地址中下载依赖了

建议复制一个maven,里面的镜像库清理掉,需要下载http镜像的时候,就将maven选中这个,就不用专门去清理了

补充知识: 解决 Jackson反序列化 Unexpected token ... , expected VALUE_STRING: need JSON String that contains type id (for subtype of ...)

首先检查是否是 objectMapper.enableDefaultTyping(); 的受害者。优先考虑删除该配置。

使用Jackson把数组的json字符串反序列化为List时候报了个JsonMappingException。

java.lang.UnsupportedOperationException: com.fasterxml.jackson.databind.JsonMappingException: Unexpected token (START_OBJECT), expected VALUE_STRING: need JSON String that contains type id (for subtype of java.util.List) at [Source: [ ......

找到问题代码,粗看似乎没什么问题?

List<MyObject> objectList = objectMapper.readValue(jsonString, new TypeReference<List<MyObject>>() {}); //jsonString是个json对象的数组

注意到异常信息“need JSON String that contains type id (for subtype of java.util.List)”。想了一会儿,好吧,有答案了。

List<MyObject> objectList = objectMapper.readValue(jsonString, new TypeReference<ArrayList<MyObject>>() {}); //jsonString是个json对象的数组

其实,有一种比较老派的反序列化为List的方式...

List<MyObject> objectList = Arrays.asList(objectMapper.readValue(jsonString, MyObject[].class)); //jsonString是个json对象的数组

当对一些较复杂的对象进行反序列化时,例如拥有接口类型成员变量的类。举个栗子:

@Data
public class TypeValue {
 private Integer type;
 private List<Integer> value;
}

有上面这个类,需要把json字符串反序列化成 Map<String, TypeValue> 这样的对象,怎么做?

可以在TypeValue这个类中使用 @JsonCreator 注解解决。

@Data
public class TypeValue {
 private Integer type;
 private List<Integer> value;

 @JsonCreator  //为Jackson提供构造函数
 public TypeValue(@JsonProperty("type") final Integer type, @JsonProperty("value") final int[] value) {
  this.type= type;
  this.value = Ints.asList(value);
 }
}

Jackson能够把[]数组转换为List。因此可以用以上方法绕过Jackson的限制。

以上使用了guava和lombok。

上一篇:springboot2.x使用Jsoup防XSS攻击的实现

栏    目:JAVA代码

下一篇:JDBC用法小结

本文标题:解决IDEA无法读取maven镜像,jar包下载失败的问题

本文地址:http://www.codeinn.net/misctech/79024.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有