java - Intelij scala项目不支持swing
问题描述
我无法在我的 scala-sdk-2.12.4 中使用 swing 库。我正在使用 Java 9 版本。当我尝试运行程序时:
package rs.ac.bg.etf.zd173013m.gui
import swing._
object HelloWorld extends SimpleSwingApplication {
def top = new MainFrame {
title = "First Swing App"
contents = new Button {
text = "Click me"
}
}
}
我收到以下错误:
Exception in thread "main" java.lang.IncompatibleClassChangeError: Method scala.swing.Reactor.$init$()V must be InterfaceMethodref constant
at scala.swing.SwingApplication.<init>(SwingApplication.scala:4)
at scala.swing.SimpleSwingApplication.<init>(SimpleSwingApplication.scala:13)
at rs.ac.bg.etf.zd173013m.gui.HelloWorld$.<init>(Application.scala:5)
at rs.ac.bg.etf.zd173013m.gui.HelloWorld$.<clinit>(Application.scala)
at rs.ac.bg.etf.zd173013m.gui.HelloWorld.main(Application.scala)
解决方案
您的类路径中有不兼容的 JAR 版本。JAR 中包含“SwingApplication”的代码是针对不同版本的“Reactor”编译的,而不是类路径中的代码。
你用什么来管理你的依赖关系?我猜你是手动下载的。
切换到像 Gradle 这样的依赖管理系统,这个问题应该会消失,因为它会确保你所有的依赖都是一致的。
推荐阅读
- airflow - 如何通过环境变量添加气流池?
- angular - 将本地文件数据的内容导入另一个 Angular 组件
- r - 在 R 中创建不均匀序列
- r - 什么时候不应该使用 assignInNamespace?
- reactjs - 如何发送 event.target 以使用 FormData 模拟函数
- python-3.x - Python Thread 运行函数返回值
- typescript - 在 Angular 6 中使用 clearInterval() 停止刷新功能不起作用?
- angular - Angular 库:单独的 HttpInterceptor
- c# - 为什么CPU使用率不增加?
- javascript - 回调里面的Javascript removeEventListner?