【问题标题】:Error on "package does not exist" while using Maven使用 Maven 时出现“包不存在”错误
【发布时间】:2016-04-23 12:59:30
【问题描述】:

我正在使用 Maven 构建一个 HelloWorld 程序。但我失败了

mvn package

错误信息是:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-    plugin:3.1:compile (default-compile) on project QuickStart: Compilation failure: Compilation failure:
[ERROR] /Users/xxx/java/QuickStart/src/main/java/hello/Greeting.java:[3,43] package org.hibernate does not exist
[ERROR] /Users/xxx/java/QuickStart/src/main/java/hello/Greeting.java:[8,9] cannot find symbol
[ERROR] symbol:  class Session 
[ERROR] location: class hello.Greeting

我发现如果我手动编译 Greeting.java,一切都会正常,这是什么原因?谢谢。

Greeting.java 就是这么简单:

package hello;

import org.hibernate.Session;

public class Greeting {

    public Greeting() {
        Session session;
    }

}

我的 pom.xml 是从 spring.io 复制的:

  <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>

    <groupId>QuickStart</groupId>
    <artifactId>QuickStart</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>


    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.0.7.Final</version>
        </dependency>
    </dependencies>


</project>

【问题讨论】:

    标签: java hibernate maven


    【解决方案1】:

    尝试添加这个依赖:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
    </dependency>
    

    【讨论】:

    • 这是正确的方法,因为您也有父 BOM。
    • 谢谢。我将示例更改为使用 hibernate 的易于理解的示例。但问题仍然存在。我该怎么办 ?手动编译 Greeting.java 工作...
    【解决方案2】:

    虽然这似乎不是您的问题,但当您的依赖项的范围是运行时,这些症状也可能发生,例如:

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.0.7.Final</version>
            <scope>runtime</scope>
        </dependency>
    

    当然应该改成

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.0.7.Final</version>
        </dependency>
    

    【讨论】:

    • 非常有帮助
    【解决方案3】:

    实际上,org.springframework.context.support 不在您放入 pom.xml 的任何包中。 您需要添加 spring-context-support 依赖项才能运行此代码。

    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context-support</artifactId>
       <version>${spring-framework-version}</version>
    </dependency>
    

    【讨论】:

    • 请注意,您还应该在 pom 中定义一个spring-framework-version 属性,否则这将不起作用
    • 谢谢。我将示例更改为使用 hibernate 的易于理解的示例。但问题仍然存在。我该怎么办 ?手动编译 Greeting.java 作品...
    猜你喜欢
    • 2014-08-11
    • 2012-09-06
    • 2012-09-10
    • 2019-08-09
    • 2016-11-13
    • 2013-10-13
    • 1970-01-01
    • 2017-08-30
    • 2019-01-21
    相关资源
    最近更新 更多