一、背景
最近在學習ES的使用,先是在一個電腦上寫的測試代碼,然后代碼復制另一台電腦上,沒想到maven項目里的pom.xml居然報錯了。所以在這里記錄一下解決的方式。
(異常是復現的,非第一現場,僅作示例)
二、問題表現
1、從項目上看的表現

2、打開pom的表現

3、定位到×的地方
null (org.apache.maven.plugins:maven-jar-plugin:2.4:jar:default-jar:package) org.eclipse.core.runtime.OperationCanceledException at
org.eclipse.core.runtime.SubMonitor.checkCanceled(SubMonitor.java:604) at org.eclipse.core.internal.resources.Resource.setDerived(Resource.java:1611) at
org.eclipse.m2e.core.internal.M2EUtils.createFolder(M2EUtils.java:73) at
org.sonatype.m2e.mavenarchiver.internal.AbstractMavenArchiverConfigurator.writePom(AbstractMavenArchiverConfigurator.java:772) at
org.sonatype.m2e.mavenarchiver.internal.AbstractMavenArchiverConfigurator$1.build(AbstractMavenArchiverConfigurator.java:161) at
org.eclipse.m2e.core.internal.builder.MavenBuilderImpl.build(MavenBuilderImpl.java:137) at org.eclipse.m2e.core.internal.builder.MavenBuilder$1.method(MavenBuilder.java:172) at
org.eclipse.m2e.core.internal.builder.MavenBuilder$1.method(MavenBuilder.java:1) at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1$1.call(MavenBuilder.java:115) at
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:177) at
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:112) at
org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1.call(MavenBuilder.java:105) at
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:177) at
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) at
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) at
org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:86) at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:200) at
org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:735) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) at
org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:301) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:304) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:360) at
org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:383) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:142) at
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:232) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
還有一個×(有時有的×能點,有的不能點)
Multiple annotations found at this line:
- Failure to transfer org.apache.httpcomponents:httpcore:jar:4.4.12 from http://maven.***.com:port/nexus/content/groups/public was cached in the local repository, resolution will not be
reattempted until the update interval of nexus-public-corp-releases has elapsed or updates are forced. Original error: Could not transfer artifact org.apache.httpcomponents:httpcore:jar:4.4.12 from/to
nexus-public-corp-releases (http://maven.***.com:port/nexus/content/groups/public): The operation was cancelled. org.eclipse.aether.transfer.ArtifactTransferException: Failure to transfer
org.apache.httpcomponents:httpcore:jar:4.4.12 from http://maven.***.com:port/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update
interval of nexus-public-corp-releases has elapsed or updates are forced. Original error: Could not transfer artifact org.apache.httpcomponents:httpcore:jar:4.4.12 from/to nexus-public-corp-releases
(http://maven.***.com:port/nexus/content/groups/public): The operation was cancelled. at
org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.newException(DefaultUpdateCheckManager.java:238) at
org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkArtifact(DefaultUpdateCheckManager.java:206) at
org.eclipse.aether.internal.impl.DefaultArtifactResolver.gatherDownloads(DefaultArtifactResolver.java:585) at
org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:503) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246) at
org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:367) at
org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:205) at
org.apache.maven.project.DefaultProjectBuilder.resolveDependencies(DefaultProjectBuilder.java:215) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:188) at
org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:119) at org.eclipse.m2e.core.internal.embedder.MavenImpl.readMavenProject(MavenImpl.java:636) at
org.eclipse.m2e.core.internal.project.registry.DefaultMavenDependencyResolver.resolveProjectDependencies(DefaultMavenDependencyResolver.java:63) at
org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:530) at
org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager$3.call(ProjectRegistryManager.java:492) at
org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager$3.call(ProjectRegistryManager.java:1) at
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:177) at
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) at
三、定位、解決問題
1、定位問題
從上述的那個×的描述,可以看到原因。
org.eclipse.core.runtime.OperationCanceledException
操作被取消異常。
也就是在引入依賴的時候,maven還在下載jar包時被終止了。
我的項目出現上述異常,就是因為下的過程中網絡卡了,然后我就手動結束了下載過程。
這種問題之前遇到過,當時總懷疑是項目結構有問題,或者jar有問題,沒有想到是這個原因。
這次又遇到這個問題的時候,我回想,在自己電腦上都正常,在公司電腦就有問題?不應該。
問題定位了,接下來就是解決問題了。
2、解決問題
打開項目的Build Path,可以看到Libraries中的Maven依賴那塊有×。

展開之后,就可以看到是哪個jar包異常。

根據路徑找到本地的maven倉庫對應的路徑。可以點進去看一下,有幾個文件,但是沒有jar文件。
解決方法:刪除4.4.12這個文件夾。然后隨意改動一下pom.xml后保存,讓Eclipse重新下一下,問題就解決了。
