【IDEA2022.3】Failed to transfer from http://0.0.0.0 during a previous attempt.

IDEA2022.3版本启动报错,原因在于Maven3.8.1默认配置阻止了对HTTP仓库的访问。由于公司的私服通常使用HTTP而非HTTPS,这导致了访问被拦截。解决方法是注释掉Maven设置.xml中拦截HTTP的配置。具体步骤包括:查看启动错误信息,找到IDEA的Maven配置文件,注释相关代码,然后IDEA可以正常启动并正确访问仓库。

安装完IDEA2022.3版本后,启动不了程序。

报如下错误
Failed to transfer from http://0.0.0.0 during a previous attempt.

原因: maven在3.8.1 的默认配置文件中增加了一组标签,如果仓库镜像是http 而不是https 就会被拦截禁止访问,而公司私服一般是http 而不支持https.
解决方案: 注释掉maven里的这个默认拦截配置

步骤如下
1、运行时报错
在这里插入图片描述
2、找到安装目录中的setting.xml文件
在这里插入图片描述
3、这段代码注释掉,不再拦截。
在这里插入图片描述
4、工程启动正常,仓库地址正常。
在这里插入图片描述

<think>我们面临的问题是Maven 3.8.1无法从HTTP仓库下载Oracle JDBC驱动(ojdbc6),因为Maven 3.8.1默认禁止使用HTTP仓库(除非明确允许)。错误信息表明,由于之前的失败,Maven已经缓存了错误,并且不会重试直到更新间隔过后或者强制更新。 根据引用[1]的错误信息,关键点是: 1. Maven 3.8.1默认阻止了HTTP仓库,所以我们需要在设置中明确允许使用HTTP仓库。 2. 错误信息中提到了一个被阻止的镜像:`http://192.168.8.21:8081/repository/maven-public/`。 同时,引用[2]提供了两种方法: 方法一:清除本地仓库中对应的目录并强制更新(使用`-U`选项)。但是,由于Maven 3.8.1默认阻止了HTTP,仅仅清除并强制更新可能不够,因为HTTP访问仍然被阻止。 方法二:手动安装ojdbc6到本地仓库。 但是,我们还可以考虑第三种方法:修改Maven的配置文件,允许使用HTTP仓库。 因此,我们可以采取以下步骤: 步骤1:尝试清除本地仓库的ojdbc6目录并强制更新(参考引用[2]) 运行: ``` rm -rf ~/.m2/repository/com/oracle/ojdbc6 mvn clean install -U ``` 如果问题依旧,则是因为HTTP仓库被阻止,需要继续步骤2。 步骤2:修改Maven的settings.xml文件,允许使用HTTP仓库(针对Maven 3.8.1及以上版本) 在Maven的安装目录下的`conf/settings.xml`文件,或者用户目录下的`.m2/settings.xml`文件中,找到`<mirrors>`部分,并添加一个镜像规则,允许特定的仓库使用HTTP。或者,更简单的方法是在`<repositories>`中声明仓库时加上`<blocked>false</blocked>`,但这种方法已经过时。 实际上,Maven 3.8.1在`settings.xml`中提供了一个新的方式:通过`<mirror>`的`<blocked>`属性来控制,但我们可能需要允许整个仓库使用HTTP。 更好的方法是:在`settings.xml`中为需要使用的HTTP仓库添加一个例外。我们可以通过以下方式: 1. 在`settings.xml`文件中,找到`<mirrors>`部分,确保没有将所有HTTP请求重定向到HTTPS的镜像(如maven-default-http-blocker)。如果有,可以将其删除或注释掉。 2. 或者,在仓库声明中,明确允许使用HTTP。但是,Maven 3.8.1默认有一个内置的HTTP阻止器,它会拦截所有HTTP仓库。 为了解决,我们可以修改`settings.xml`,将阻止HTTP的镜像设置为非激活状态。默认情况下,Maven 3.8.1的`conf/settings.xml`中有一个镜像规则,其id为`maven-default-http-blocker`,它拦截所有HTTP仓库。我们可以通过设置`<blocked>false</blocked>`来禁用这个镜像规则,但更安全的方法是删除或注释掉这个镜像。 具体操作: 打开`settings.xml`,找到如下镜像配置(通常在`<mirrors>`节): ```xml <mirror> <id>maven-default-http-blocker</id> <mirrorOf>external:http:*</mirrorOf> <name>Pseudo repository to mirror external repositories initially using HTTP.</name> <url>http://0.0.0.0/</url> <blocked>true</blocked> </mirror> ``` 我们可以将这个镜像的`<blocked>`设置为`false`,或者直接删除(或注释掉)整个`<mirror>`。 步骤3:如果步骤2不起作用,或者我们不想修改全局设置,我们可以尝试在项目pom.xml中明确指定仓库,并使用HTTPS(如果仓库支持的话)。但是,对于内部仓库(如192.168.8.21)可能没有HTTPS,因此只能允许HTTP。 步骤4:如果以上都不行,则手动安装jar到本地仓库(引用[2]的方法四)。 手动安装步骤: 1. 下载ojdbc6.jar(注意版本,这里我们需要6) 2. 使用mvn install命令安装到本地仓库: ``` mvn install:install-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=6 -Dpackaging=jar ``` 步骤5:如果公司仓库提供了HTTPS,则应该使用HTTPS的仓库地址,这样就不会被阻止。 总结解决方案: 方案一(推荐):修改Maven的settings.xml,移除或禁用默认的HTTP阻止器。 方案二:清除本地仓库并强制更新(如果已经允许HTTP,则可能成功)。 方案三:手动安装ojdbc6到本地仓库。 由于错误信息中明确提示了“Blocked mirror for repositories”,所以方案一最直接。 详细步骤(方案一): 1. 找到Maven的settings.xml文件(在Maven安装目录的conf目录下,或者在用户目录的.m2目录下)。 2. 打开settings.xml,找到`<mirrors>`部分,注释掉或删除id为`maven-default-http-blocker`的镜像配置。 3. 保存文件,重新运行mvn命令。 详细步骤(方案二):如果不想修改全局设置,可以在项目pom.xml中覆盖仓库设置(但需要仓库支持HTTPS,否则无效)不现实,因为内部仓库可能不支持HTTPS。 详细步骤(方案三):手动安装 1. 从Oracle官方网站下载ojdbc6.jar(需要Oracle账号)或者从公司内部获取。 2. 执行以下命令安装: ```bash mvn install:install-file -Dfile=/path/to/ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=6 -Dpackaging=jar ``` 3. 然后重新运行项目构建。 根据实际情况选择方案。 注意:由于Oracle的授权,ojdbc驱动不能从Maven中央仓库直接获取,因此即使允许了HTTP,如果内部仓库没有提供ojdbc6,那么还是会失败。因此,如果内部仓库没有该驱动,手动安装可能是必需的。 下面,我将详细说明每一种方案的步骤: 方案一:修改settings.xml(推荐) 1. 打开Maven的settings.xml文件。 - 全局设置:${maven.home}/conf/settings.xml - 用户设置:${user.home}/.m2/settings.xml 2. 在`<mirrors>`标签内,找到id为`maven-default-http-blocker`的镜像,将其删除或注释掉。例如: ```xml <!-- 注释掉这个镜像 <mirror> <id>maven-default-http-blocker</id> <mirrorOf>external:http:*</mirrorOf> <name>Pseudo repository to mirror external repositories initially using HTTP.</name> <url>http://0.0.0.0/</url> <blocked>true</blocked> </mirror> --> ``` 3. 保存文件。 4. 清除本地仓库中的ojdbc6目录:`rm -rf ~/.m2/repository/com/oracle/ojdbc6` 5. 重新运行构建:`mvn clean install -U` 方案二:手动安装ojdbc6 1. 下载ojdbc6.jar(版本6)到本地。 注意:Oracle官方下载可能需要登录。如果没有,可以从其他途径获取,但要注意合法性。 2. 打开命令行,执行以下命令(假设ojdbc6.jar在下载目录): ```bash mvn install:install-file -Dfile=~/Downloads/ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=6 -Dpackaging=jar ``` 3. 安装成功后,在项目的pom.xml中添加依赖: ```xml <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>6</version> </dependency> ``` 4. 重新构建项目。 方案三:使用公司内部仓库的HTTPS地址(如果支持) 如果公司仓库有HTTPS的地址,则可以修改pom.xml中的仓库地址为HTTPS,这样就不会被阻止。 在pom.xml中: ```xml <repositories> <repository> <id>maven-public</id> <url>https://192.168.8.21:8081/repository/maven-public/</url> <!-- 注意:https --> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> ``` 但是,如果公司仓库不支持HTTPS,那么只能采用方案一(允许HTTP)或者方案二(手动安装)。 考虑到安全因素,长期解决方案是让公司仓库启用HTTPS,但短期内可以先用方案一。 请根据实际情况选择方案。 希望这些步骤能解决您的问题。 §§相关问题§§ 1. Maven 3.8.1默认阻止HTTP仓库的原因是什么? 2. 如何为Maven配置HTTPS仓库? 3.Maven中,如何手动安装一个不在中央仓库的依赖? </think>要解决 Maven 3.8.1 无法访问 HTTP 仓库导致 `com.oracle:ojdbc6:pom:6` 下载失败的问题,请按照以下步骤操作: ### 解决方案分步说明 #### 步骤 1: 清除本地 Maven 缓存 ```bash # 删除 ojdbc6 缓存目录 rm -rf ~/.m2/repository/com/oracle/ojdbc6 # 强制 Maven 重新下载(-U 参数) mvn clean install -U ``` 此操作清除损坏的缓存并强制 Maven 重新尝试下载依赖[^2]。 #### 步骤 2: 修改 Maven 设置允许 HTTP 访问 1. **编辑 Maven `settings.xml` 文件** 位置:`${MAVEN_HOME}/conf/settings.xml` 或 `~/.m2/settings.xml` 2. **禁用 HTTP 阻止规则** 在 `<mirrors>` 部分注释或删除 HTTP 阻止器: ```xml <!-- 注释掉以下内容 <mirror> <id>maven-default-http-blocker</id> <mirrorOf>external:http:*</mirrorOf> <name>Pseudo repository to mirror external repositories</name> <url>http://0.0.0.0/</url> <blocked>true</blocked> </mirror> --> ``` #### 步骤 3: 手动安装 Oracle JDBC 驱动 如果网络限制无法解决: ```bash # 下载 ojdbc6.jar 文件(需从Oracle官网获取) mvn install:install-file \ -Dfile=ojdbc6.jar \ -DgroupId=com.oracle \ -DartifactId=ojdbc6 \ -Dversion=6 \ -Dpackaging=jar ``` 手动安装后,在 `pom.xml` 添加: ```xml <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>6</version> </dependency> ``` ### 问题原因说明 - **HTTP 阻止机制**:Maven 3.8.1+ 默认阻止 HTTP 仓库访问[^1] - **缓存污染**:失败的下载会被缓存,导致后续重试失败[^1] - **Oracle 授权限制**:JDBC 驱动不在中央仓库,需特殊处理 ### 验证是否解决 ```bash mvn dependency:get \ -Dartifact=com.oracle:ojdbc6:6 \ -DremoteRepositories=http://your-repo-url ``` 观察输出是否包含 `Downloaded from ...` 成功信息。 ### 预防措施 ```xml <!-- pom.xml 中声明仓库 --> <repositories> <repository> <id>your-repo</id> <url>http://192.168.8.21:8081/repository/maven-public</url> </repository> </repositories> ``` > **重要提示**:长期解决方案应将仓库升级为 HTTPS。若为内部仓库,可配置 Nginx 代理添加 HTTPS 支持。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值