【问题标题】:playframework - package javax.persistence does not existplayframework - 包 javax.persistence 不存在
【发布时间】:2013-12-23 22:39:50
【问题描述】:

我在使用数据库时遇到问题 我正在学习本教程 http://vimeo.com/58969923#(来自 playframework.com 页面) 在模型中:

play-2.2.1/jcirs/app/models/MedicalIncident.java

公共类 MedicalIncident 扩展模型{}

我正在尝试使用实体。为此,我必须导入: javax.persistence.* 和 play.db.ebean.* 但他们都找不到。 错误是

包 javax.persistence 不存在

我该怎么办? 使用任何其他数据库引擎?或者应该下载一些依赖项。 我想以最好的方式使用 playframework。 请帮忙。

我的配置 应用程序.conf:

 db.default.driver=org.h2.Driver
 db.default.url="jdbc:h2:mem:play"
 ebean.default="models.*"

堆栈跟踪:

[jcirs] $ run 8081

--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:8081

(Server started, use Ctrl+D to stop and go back to the console...)

[info] Compiling 5 Scala sources and 5 Java sources to /home/daniel/play-2.2.1/jcirs/target/scala-2.10/classes...
[error] /home/daniel/play-2.2.1/jcirs/app/models/MedicalIncident.java:4: error: package javax.persistence does not exist
[error] import javax.persistence.*;
[error] ^
[error] /home/daniel/play-2.2.1/jcirs/app/models/MedicalIncident.java:6: error: package play.db.ebean does not exist
[error] import play.db.ebean.*;
[error] ^
[error] /home/daniel/play-2.2.1/jcirs/app/models/MedicalIncident.java:14: error: cannot find symbol
[error] public class MedicalIncident extends Model {
[error]                                      ^
[error]   symbol: class Model
[error] /home/daniel/play-2.2.1/jcirs/app/models/MedicalIncident.java:13: error: cannot find symbol
[error] @Entity
[error]  ^
[error]   symbol: class Entity
[error] /home/daniel/play-2.2.1/jcirs/app/models/MedicalIncident.java:15: error: cannot find symbol
[error]     @id
[error]      ^
[error]   symbol:   class id
[error]   location: class MedicalIncident
[error] /home/daniel/play-2.2.1/jcirs/app/controllers/MedicalIncident.java:21: error: cannot find symbol
[error]         MedicalIncident medical_incident = Form.form(MedicalIncident.class).bindFormRequest().get();
[error]                                            ^
[error]   symbol:   variable Form
[error]   location: class MedicalIncident
[error] 6 errors
[error] (compile:compile) javac returned nonzero exit code
[error] application - 

! @6gfjpj0cf - Internal server error, for (GET) [/] ->

play.PlayExceptions$CompilationException: Compilation error[error: package javax.persistence does not exist]
        at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14$$anonfun$apply$16.apply(PlayReloader.scala:304) ~[na:na]
        at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14$$anonfun$apply$16.apply(PlayReloader.scala:304) ~[na:na]
        at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
        at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14.apply(PlayReloader.scala:304) ~[na:na]
        at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14.apply(PlayReloader.scala:298) ~[na:na]
        at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
[warn] play - No application found at invoker init

【问题讨论】:

  • 你能添加堆栈跟踪吗?还是仅在IDE中出现该错误?你试过从播放命令行运行它吗?
  • 它也发生在命令行中。

标签: java persistence ebean playframework-2.2


【解决方案1】:

您是否在 Build.scala 中更新了项目依赖项? 不确定 Play 2.2.1 中是否有任何变化,但对于 Play 2.1.3,Build.scala 中的依赖项如下所示:

  val appDependencies = Seq(
    javaCore,
    javaJdbc,
    javaEbean
  )

编辑: 在 Build.scala 中更新依赖项后,不要忘记通过运行相应的播放命令来更新 IDEA 或 Eclipse 中的依赖项,例如

play idea

【讨论】:

    【解决方案2】:

    当您运行“play idea”时,Playframework 正在生成 IDEA 特定文件(如果您使用的是 Eclipse,请运行“play eclipse”)。如果您按照教程中介绍的相同方式导入项目,则项目中应该已经有必要的 JAR。

    如果仍然无法正常工作,请验证 IDEA 是否为您的项目正确分配了 JDK。

    试着了解这个框架在幕后做了什么,不要只是试图让它工作而忽略重要的东西。

    【讨论】:

    • 我在我的项目目录中运行了 play 然后我运行了这个命令想法 with-sources=yes 所以我全力以赴,因为没有错误
    • 检查这个框架支持哪个版本的 IDEA,因为它会生成 IDEA 特定的文件
    • 这不是 ide 相关问题。我的项目中没有所需的库。
    【解决方案3】:

    我遇到了同样的问题,我使用的是 Eclipse。我包括@Entity,例如在我的项目控制台中,我输入了eclipse with-source=true。在我的 Eclipse 项目中进行“刷新”和“清理”之后,它为我带来了所有 JAR,然后我点击了问题,IDE 提供了包含 javax.persistence.*play.db.ebean.Model 等的可能性。

    【讨论】:

      【解决方案4】:

      我在使用经过大量修改的 Eclipse Neon 版本时遇到了同样的问题。
      为我解决这个问题的线索是,我唯一看到错误的地方是在 Maven em> 构建。 Eclipse IDE 能够很好地编译和运行程序。
      我能够通过向项目的 pom.xml 文件中添加几个依赖项来解决它。有关依赖项的 xml 代码,请参见下文。
      我能够通过在 Maven Central 上向下钻取目录来获取 groupId 和 artifactId 的版本。我只是沿着树走,直到找到 persistence.corepersistence.jpa 工件的 metadata.xml 文件。

          <dependency>
              <groupId>org.eclipse.persistence</groupId>
              <artifactId>org.eclipse.persistence.core</artifactId>
              <version>2.6.4</version>
              <scope>compile</scope>
          </dependency>
      
          <dependency>
              <groupId>org.eclipse.persistence</groupId>
              <artifactId>org.eclipse.persistence.jpa</artifactId>
              <version>2.6.4</version>
              <scope>compile</scope>
          </dependency>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-05
        • 2015-02-09
        • 2017-02-17
        • 2012-05-16
        • 1970-01-01
        • 2022-10-01
        • 1970-01-01
        相关资源
        最近更新 更多