Java Maven:';包不存在';(和其他错误)

Java Maven:';包不存在';(和其他错误),java,eclipse,maven,Java,Eclipse,Maven,我正在使用Maven运行几个selenium自动化测试。当我在Eclipse中调试时,我通常只需右键单击testing.xml并运行As>TestNG套件。但是在Jenkins中运行时需要使用mvn测试。但当我运行该命令时,会出现几个错误: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project ecom: Co

我正在使用Maven运行几个selenium自动化测试。当我在Eclipse中调试时,我通常只需右键单击testing.xml并运行As>TestNG套件。但是在Jenkins中运行时需要使用
mvn测试
。但当我运行该命令时,会出现几个错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project ecom: Compilation failure: Compilation failure:
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[15,43] package com.company.automation.ecom.pages does not exist
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[16,43] package com.company.automation.ecom.pages does not exist
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[110,13] cannot find symbol
[ERROR] symbol:   class Header
[ERROR] location: class com.company.automation.ecom.HelperMethods
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[110,62] cannot find symbol
[ERROR] symbol:   class Header
[ERROR] location: class com.company.automation.ecom.HelperMethods
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[113,9] cannot find symbol
[ERROR] symbol:   class SignIn
[ERROR] location: class com.company.automation.ecom.HelperMethods
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[113,58] cannot find symbol
[ERROR] symbol:   class SignIn
[ERROR] location: class com.company.automation.ecom.HelperMethods
我知道文件是存在的,当我作为TestNG套件运行时,一切正常。此外,当我运行which
java-version
时,我得到以下结果:

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
我知道在某些地方这是一个配置问题,但我对maven/java配置的了解还不够,无法解决这个问题。Maven告诉我的文件不见了是我的文件,它们绝对存在。这是我的pom.xml文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <properties>
                        <property>
                            <name>listener</name>
                            <value>com.kirklands.automation.ecom.retry.MyTestListenerAdapter</value>
                        </property>
                    </properties>
                    <suiteXmlFiles>
                        <suiteXmlFile>testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <groupId>com.kirklands.automation</groupId>
    <artifactId>ecom</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>ecom</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>1.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>
</project>

您需要首先运行
maven clean install
命令

该命令将编译您丢失的
包,它甚至将运行测试


更新:您应该将
com.company.automation.ecom.pages
包更改为
src/main/java
文件夹。这样就可以在
maven compile
阶段对其进行编译。

看起来您的问题是由于您试图从以下位置访问:

src/main/java

测试源-位于:

src/test/java

以下是您发布的日志的确切片段:

/Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[15,43]包com.company.automation.ecom.pages不存在

它将从另一方面起作用:如果您使用测试范围(
src/test/java
)中的源代码(
src/main/java

马文有他自己的

它有一个严格的后果:

  • 编译
    -编译项目的源代码
  • test
    -使用合适的单元测试框架测试编译的源代码。这些测试不应要求打包或部署代码
在编译过程中,您只能编译源代码。但是,它取决于您的测试(pages包),此时无法编译,因为它将仅在
test
阶段编译。
因此,编译失败

要解决此问题,请尝试更改您的项目结构,稍微:

src/main/java
    {package com.company.automation.ecom}
        CreditCard.java
        HelperMethods.java
    {package com.company.automation.ecom.pages}
        Header.java
        SignIn.Java
        (etc...)
src/test/java
    {package com.company.automation.ecom.tests}
        HeaderTests.java

您的测试应该使用源代码(核心和页面),没有任何问题。

在您的本地环境中运行
mvn测试时,您是否有同样的问题?是的。如果我从命令行运行
mvn test
(与pom.xml文件在同一个文件夹中),或者如果我在eclipse中右键单击项目并运行as>Maven test,我会得到相同的输出。您需要切换Maven编译器插件以使用source/target 1.8 for java。默认值为1.5。非常感谢,这解决了我的一个问题!我现在不再收到关于切换到Source7或更高版本以在案例中启用字符串的消息。但是,我仍然在另一个maven模块中获得
包不存在
错误。是
com.company.automation.ecom.pages
包吗?我尝试运行
mvn clean install
,但我得到了相同的错误。我有类似的问题。我不希望仅仅为了这个目的而将Main中的类移动到test文件夹中。还有其他建议吗?是的,这似乎解决了这个问题。感谢maven的澄清!我也有类似的问题。我不希望仅仅为了这个目的而将Main中的类移动到test文件夹中。还有其他建议吗@测试人员问我建议的同时,我看不到任何对现有答案的支持。
src/main/java
    {package com.company.automation.ecom}
        CreditCard.java
        HelperMethods.java
    {package com.company.automation.ecom.pages}
        Header.java
        SignIn.Java
        (etc...)
src/test/java
    {package com.company.automation.ecom.tests}
        HeaderTests.java