org.apache.commons.io does not exist
# 🚀 解决 Ambari Infra 中 package org.apache.commons.io does not exist
错误问题
在使用 Ambari Infra 构建和部署大数据集群时,可能会遇到类似如下的编译错误信息:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/EnableKerberosPluginSolrZkCommand.java:[22,29] package org.apache.commons.io does not exist
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/SetAutoScalingZkCommand.java:[29,29] package org.apache.commons.io does not exist
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/S3Uploader.java:[24,29] package org.apache.commons.io does not exist
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/EnableKerberosPluginSolrZkCommand.java:[83,14] cannot find symbol
symbol: variable FileUtils
location: class org.apache.ambari.infra.solr.commands.EnableKerberosPluginSolrZkCommand
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/SetAutoScalingZkCommand.java:[52,30] cannot find symbol
symbol: variable FileUtils
location: class org.apache.ambari.infra.solr.commands.SetAutoScalingZkCommand
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/S3Uploader.java:[40,31] cannot find symbol
symbol: variable FileUtils
location: class org.apache.ambari.infra.solr.S3Uploader
[INFO] 6 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for ambari-infra 3.0.0.0-SNAPSHOT:
[INFO]
[INFO] ambari-infra ....................................... SUCCESS [ 1.742 s]
[INFO] Ambari Infra Solr Client ........................... FAILURE [ 3.038 s]
[INFO] Ambari Infra Solr Plugin ........................... SKIPPED
[INFO] Ambari Infra Manager ............................... SKIPPED
[INFO] Ambari Infra Assembly .............................. SKIPPED
[INFO] Ambari Infra Manager Integration Tests ............. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.865 s
[INFO] Finished at: 2024-09-29T08:56:48Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project ambari-infra-solr-client: Compilation failure: Compilation failure:
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/EnableKerberosPluginSolrZkCommand.java:[22,29] package org.apache.commons.io does not exist
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/SetAutoScalingZkCommand.java:[29,29] package org.apache.commons.io does not exist
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/S3Uploader.java:[24,29] package org.apache.commons.io does not exist
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/EnableKerberosPluginSolrZkCommand.java:[83,14] cannot find symbol
[ERROR] symbol: variable FileUtils
[ERROR] location: class org.apache.ambari.infra.solr.commands.EnableKerberosPluginSolrZkCommand
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/SetAutoScalingZkCommand.java:[52,30] cannot find symbol
[ERROR] symbol: variable FileUtils
[ERROR] location: class org.apache.ambari.infra.solr.commands.SetAutoScalingZkCommand
[ERROR] /opt/modules/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/S3Uploader.java:[40,31] cannot find symbol
[ERROR] symbol: variable FileUtils
[ERROR] location: class org.apache.ambari.infra.solr.S3Uploader
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project ambari-infra-solr-client: Compilation f
ailure
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:911)
at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:129)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <args> -rf :ambari-infra-solr-client
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
该错误表明,代码中引用了 org.apache.commons.io
包,但系统并未找到对应的类文件。具体来说,错误通常出现在以下几个方面:
FileUtils
类无法找到,导致项目无法编译。- 缺少
Apache Commons IO
依赖,导致相关的类路径未能正确加载。
本篇文章将指导你一步步解决该问题,确保能够顺利进行 Ambari Infra 项目的编译。
# 问题分析 🔍
缺少依赖 📦
错误日志中提到,找不到org.apache.commons.io
包,通常是因为项目没有在pom.xml
文件中正确声明 Apache Commons IO 依赖。这会导致在编译过程中,FileUtils
等类无法被识别。无法解析符号 ❌
当编译器无法解析类或符号时,这通常表明缺少相关依赖包。此时,Maven 无法从远程仓库或本地仓库加载依赖,导致编译失败。
# 解决方案 💡
# 1️⃣ 检查并添加 Apache Commons IO 依赖
为了确保项目能够顺利编译,首先需要在 pom.xml
中添加 Apache Commons IO 的依赖。具体步骤如下:
- 打开项目的
pom.xml
文件。 - 在
<dependencies>
部分,添加以下依赖项:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
2
3
4
5
6
commons-io
是一个常用的 Java IO 工具库,它提供了许多便捷的文件操作方法,如 FileUtils
类。在添加完该依赖后,保存并关闭 pom.xml
文件。
# 2️⃣ 重新编译项目
依赖添加成功后,打开命令行,进入项目根目录,执行以下命令重新编译项目:
mvn clean install
此命令将清除目标文件夹,重新编译并构建项目。确保 Apache Commons IO 库能够成功加载,并在编译时不再出现缺失类的错误。
# 3️⃣ 验证依赖是否成功加载
为了确认 commons-io
依赖是否已成功下载并包含在项目中,可以使用 Maven 提供的命令查看依赖树:
mvn dependency:tree
执行该命令后,Maven 会展示项目的依赖树,检查其中是否包含 commons-io
。如果依赖显示在列表中,说明依赖已正确加载。
# 4️⃣ 清理本地 Maven 缓存
如果以上步骤都已完成,但错误依然存在,可以尝试清理本地 Maven 仓库缓存,并强制 Maven 从远程仓库重新下载所有依赖。执行以下命令:
mvn clean -U
该命令将清理 Maven 本地仓库的缓存并强制更新项目中的所有依赖。这对于解决因缓存问题导致的依赖加载失败尤为有效。