代码使用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的类?