为什么我会遇到意外的URLConnection defaultUseCaches

时间:2016-04-22 15:02:42

标签: eclipse

我的Eclipse环境突然出现了这个错误。代码从命令行编译好,所以给出了什么?我没有改变任何缓存。请不要告诉我我必须重新安装Eclipse - 如果是这样的话,为什么它会被破坏?

意外的URLConnection defaultUseCaches

2 个答案:

答案 0 :(得分:5)

我通过关闭Eclipse并使用-clean选项重新运行它来解决了这个问题:

Eclipse.exe -clean

答案 1 :(得分:0)

上周在Eclipse版本:2019-06(4.12.0)中遇到了此问题

我们的网站决定通过阻止http访问来保护我们的Nexus Repository Manager。更新了我的settings.xml文件,以为我的镜像设置指定https协议:

  <mirror>
     <id>nexus</id>
     <mirrorOf>*</mirrorOf>
     <url>https://nexus.mycompany.com/nexus/content/groups/public/</url>
  </mirror>

将协议从“ http”更改为“ https”后,由于缺少依赖项,我开始收到Java警告和错误。查看错误日志,我看到了此意外的URL连接问题。

就我而言,问题出在我们的Nexus服务器的SSL证书是由未安装在jre / lib / security / cacerts中的公司CA颁发的。对于命令行构建而言,这不是问题,因为我们在用户本地trustStore中安装了SSL证书,并在MAVEN_OPTS中引用了trustStore:

-Djavax.net.ssl.trustStore = C:/Users/myusername/.keystore

我们还将此系统属性包含在Eclipse中已安装的JRE的配置中。通过命令行或通过Eclipse中的“运行为Maven Build”菜单执行Maven构建时,由于系统属性指定了本地trustStore,因此构建成功。

不幸的是,如果我们向项目添加依赖项,或者更新到本地maven存储库(〜/ .m2 / repository /..._)中不存在的版本,我们会在标记视图中看到Java错误,我们会在错误日志中看到此错误。该问题源于Eclipse m2e插件使用内部Java编译器的事实,该内部Java编译器在用于启动Eclipse的JVM中运行。正在运行Eclipse的JVM没有指定trustStore,因此SSL证书不可用,并且它无法解析本地存储库中不存在的依赖项。

可以通过以下方法解决此问题: 1.更新eclipse.ini,将-Djavax.net.ssl.trustStore = C:/Users/myusername/.keystore添加到-vmargs部分。这解决了与访问我们的Nexus服务器有关的问题,但是由于不再需要检索更新的SSL证书,因此打破了Eclipse更新机制。我们不喜欢这种解决方案。 2.将Nexus服务器的SSL证书添加到jre / lib / security / cacerts。我们不喜欢这样做,因为它a)篡改了JRE发行版,并且b)要求每次升级JRE时都要进行此更新。 3.每当添加依赖项或更新版本时,都要运行手动构建,以强制独立Maven将新的依赖项拉入本地Maven存储库。这就是我们现在要做的。

我个人认为这是Eclipse或m2e问题。看来,如果Eclipse要使用内部工具来解决依赖关系,那么它应该具有某种机制来接受指定必要的trustStore所需的java系统属性。换句话说,应该可以为Eclipse更新和m2e构建指定不同的trustStore文件。