【问题标题】:Maven compile "Cannot find symbol" [duplicate]Maven编译“找不到符号” [重复]
【发布时间】:2015-07-10 07:58:46
【问题描述】:

由于某种原因,这个命令在我的本地机器上运行良好:

mvn clean install -DskipTests=true -Psdk

但是,对于 Codeship,它现在可以工作并抛出此“找不到符号”错误。 在 Codeship 中,完整的命令是:

jdk_switcher use oraclejdk8
echo $JAVA_HOME
mvn clean install -DskipTests=true -Psdk

在 POM 中,存储库有这个:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

错误:

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ client-app ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 65 source files to /home/rof/src/bitbucket.org/company/client-app/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /home/rof/src/bitbucket.org/company/client-app/src/main/java/com/client/rest/resources/MyResource.java:[3,61] cannot find symbol
symbol:   class MyEntity

【问题讨论】:

  • 我们需要查看完整的错误信息。
  • 您缺少依赖项或您的代码有问题!
  • 我觉得已经很清楚了:MyEntity 类不包含在编译类路径中。
  • 有两种可能的情况:MyEntity 文件中没有 MyEntity 类的导入,或者类路径中没有 MyEntity 类。
  • 除了 Dawid 和 m0skit0 提供的答案之外,您可以尝试在本地系统上使用相同的 JDK 进行编译。我意识到您的 POM 明确指出了 1.7,但值得一试,至少可以排除它。我知道我过去曾遇到过类似的问题。

标签: java maven codeship


【解决方案1】:

您的 Maven 将 Java 版本读取为 1.8,而 pom.xml 显示版本为 1.7。

尝试安装所需的版本。

如果已经安装,请检查您的 $JAVA_HOME 环境变量,它应该包含 Java JDK 8 的路径。如果找不到,请修复您的环境变量。

同时删除线条

 <fork>true</fork>
     <executable>${JAVA_1_8_HOME}/bin/javac</executable>

来自 pom.xml

【讨论】:

    【解决方案2】:

    我有同样的问题。 原因是其中一个类被用于

    src/main/java/
    

    实际上它存在于

    src/test/java
    

    【讨论】:

    • 那么你做了什么?如果您能提供解决问题的方法,将会有所帮助。
    • 我更改了参考。由于多种原因,可能会发生此错误。我的是这个。你有什么问题?
    • 类似的。我在 src/main/java 中有一个类,它使用了 src/test/java 中的一个类的引用。因此,当执行默认编译目标时,它无法在 src/main/java 中找到测试类。
    • 然后只需在 java 包中创建该类而不是测试
    【解决方案3】:

    如果您已正确导入依赖项,则可以尝试以下过程。
    第一次尝试-
    mvn clean
    如果运行成功,请尝试-
    mvn install
    如果这工作正常,那么您可以尝试-
    mvn compile
    这个过程对我有用。

    【讨论】:

    • 顺便说一句,这个问题可能由于多种原因而发生。首先,依赖问题。第二,参考问题。等如果所有问题都已解决,但您仍然收到错误,那么您可以尝试上述过程。
    【解决方案4】:

    我遇到了类似的问题,但是当我在 POM 中更改 Testng 版本时,它解决了这个问题。

    <artifactId>testng</artifactId>
    <version>6.9.8</version>       // Changed the version to 6.9.8
    <scope>test</scope>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-06
      • 2013-03-08
      • 2019-05-31
      • 1970-01-01
      • 2012-08-27
      • 2013-01-03
      • 2016-02-17
      • 1970-01-01
      相关资源
      最近更新 更多