播放框架:操作数堆栈上的错误类型

时间:2018-11-12 23:30:15

标签: java scala playframework jvm ebean

代码使用scala编写,但Exception来自java.lang。我正在尝试将我的基本Scala + Play应用程序连接到数据库。我正在使用教程https://www.youtube.com/watch?v=Zdt_utUOd5s&list=PLYPFxrXyK0Bx9SBkNhJr1e2-NlIq4E7ED&index=21

一切工作都像在视频中一样,直到7:40滚动。我没有得到运行SQL脚本的选项,而是得到了这个奇怪的错误:

  

VerifyError:操作数堆栈上的类型错误

     

异常详细信息:

     

位置:       模型/书。(ILjava / lang / String; ILjava / lang / String;)V @ 2:invokevirtual

     

原因:       类型未初始化,此(当前帧,堆栈[0])不可分配给“模型/帐簿”

     

当前帧:       bci:@ 2       标志:{flagThisUninit}       当地人:{未初始化,整数,'java / lang / String',整数,'java / lang / String'}

await
     

字节码:       0000000:2a1b b600 d52a 2cb6 00d8 2a1d b600 db2a       0000010:1904 b600 de2a b700 e12a bb00 e359 2ab7       0000020:00e6 b500 e82a b800 ec2a 1bb6 005a 2a2c       0000030:b600 622a 1db6 0069 2a19 04b6 0070 b1

还有一些堆栈跟踪:

这是我的模特。书班:

stack: { uninitializedThis, integer }

书本对象

package models

import io.ebean.Model
import javax.persistence.{Entity, Id}

@Entity
case class Book(identifier: Int, title1: String, price1: Int, author1: String)  extends Model {
  @Id
  var id: Int = identifier
  var title: String = title1
  var price: Int = price1
  var author: String = author1

  override def toString: String = s"id = $id $title written by $author"

我已经完成了视频中那个家伙所做的所有必要的准备工作(build.sbt,plugins.sbt,app.conf)。我的app.conf文件中有import scala.collection.mutable.HashSet object BookSet { val set: HashSet[Book] = HashSet[Book]() add(Book(1,"C++",20,"This one Danish Guy")) add(Book(2,"Java",30,"Sun Mirco")) add(Book(3,"Gone with the wind",60,"Some dude")) add(Book(4,"Catcher in the Rye",20,"Some other dude")) def findById(id: Int): Book = { var mybook: Book = null set foreach { book => if(book.id == id) mybook = book } mybook } def add(book: Book) = { set.add(book) //bookIndex+=1 } def remove(book: Book) = { set.remove(book) } 行,并添加了

db.default.enabled = true

生成build.sbt

我注意到在删除@Entity注释后,我没有得到异常,也没有运行sql script =的选项。是什么原因导致该问题以及如何解决?是因为我使用的是Scala类,而不是普通的POJO的类?

0 个答案:

没有答案