【问题标题】:Maven "class file for ... not found" compilation errorMaven“找不到...的类文件”编译错误
【发布时间】:2012-03-13 23:42:29
【问题描述】:

我有一个 Maven 项目。当我尝试使用 Maven 构建它时,我收到此错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.
  3.2:compile (default-compile) on project myProject: Compilation failure:
  Compilation failure:
[ERROR] ClassA.java:[32,38] cannot access ClassB
[ERROR] class file for ClassB not found

ClassB 在另一个工件中,并且该工件在本地存储库中。事实上,我使用 m2eclipse Maven 插件构建这个项目没有任何问题。只有当我运行mvn compile 时,构建才会失败。

我必须做什么才能从命令行构建?

【问题讨论】:

    标签: java eclipse maven


    【解决方案1】:

    Eclipse 可能会绕过您的 pom 依赖项并通过查找不在您的 pom.xml 中的依赖项来“帮助”您。然后,当您从命令行运行时,eclipse 不再提供帮助。我会仔细检查你的 pom 是否明确声明了依赖关系。你也可以试试

    mvn dependency:analyze
    

    了解更多信息。

    【讨论】:

    • 发布你的 pom.xml 文件和你的 src 树会有所帮助(linux tree 命令)
    • 在完整的mvn clean install 期间上游的一些编译问题后,我遇到了同样的问题。问题是 Eclipse 从它自己的工作区解决,但 maven 必须使用不完整或有故障的本地存储库。解决方案:再次对整个项目执行mvn clean install(从命令行),根据 m2eclipse,上游不会再产生编译错误
    【解决方案2】:

    看起来您已经在 src/test/java 而不是 src/main/java 区域中定义了一个常用的类,这有时是问题导致 eclipse 的行为有点不同。

    【讨论】:

      【解决方案3】:

      添加到 pom.xml:

      <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <configuration>
                      <source>1.6</source>
                      <target>1.6</target>
                      <encoding>UTF-8</encoding>
                      <compilerArguments>
                          <extdirs>src\main\webapp\WEB-INF\lib</extdirs>
                      </compilerArguments>
                  </configuration>
              </plugin>
          </plugins>
      </build>
      

      【讨论】:

      • 你为什么认为这会有所帮助?
      猜你喜欢
      • 2015-11-06
      • 2019-05-31
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      相关资源
      最近更新 更多