java.awt.eventdispatchthread,Scala中的Java AWT:(AWT-EventQueue-0)java.lang.NoClassDefFoundError...

I'm trying to use java awt in scala to make a simple desktop application. I have been working on it for some days without any problem, until I didn't touch it for 2 days and when I came back, I get a java.lang.NoClassDefFoundError exception. It was working fine before, but now even the simplest of code gives me this error.

Main.scala

import java.awt.{EventQueue}

class Bar(val bar: Int) {

}

object Main {

def main(args: Array[String]) {

EventQueue.invokeLater(() => {

val b = new Bar(20)

println(b.bar)

});

}

}

I run it with sbt

sbt run

It compiles, but I get this exception

[error] (AWT-EventQueue-0) java.lang.NoClassDefFoundError: Bar

[error] java.lang.NoClassDefFoundError: Bar

[error] at Main$.$anonfun$main$1(Main.scala:11)

[error] at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)

[error] oats / Cat java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)

[error] at java.awt.EventQueue.access$500(EventQueue.java:97)

[error] at java.awt.EventQueue$3.run(EventQueue.java:709)

[error] at java.awt.EventQueue$3.run(EventQueue.java:703)

[error] at java.security.AccessController.doPrivileged(Native Method)

[error] at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

[error] at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)

[error] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)

[error] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

[error] at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

[error] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

[error] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

[error] at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

[error] Caused by: java.lang.ClassNotFoundException: Bar

[error] at java.net.URLClassLoader.findClass(URLClassLoader.java:382)

[error] at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

[error] at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

[error] at Main$.$anonfun$main$1(Main.scala:11)

[error] at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)

[error] at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)

[error] at java.awt.EventQueue.access$500(EventQueue.java:97)

[error] at java.awt.EventQueue$3.run(EventQueue.java:709)

[error] at java.awt.EventQueue$3.run(EventQueue.java:703)

[error] at java.security.AccessController.doPrivileged(Native Method)

[error] at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)

[error] at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)

[error] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)

[error] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

[error] at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

[error] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

[error] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

[error] at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

[error] stack trace is suppressed; run last Compile / bgRun for the full output

What am I doing wrong?

解决方案

I suspect a SBT bug. I can reproduce the issue with SBT 1.3.0, but not with SBT 1.2.8. Also I do not reproduce the issue when I add fork := true into the build.sbt file even when using SBT 1.3.0. You can use any of those options as a workaround.

I have reported the issue as Strange NoClassDefFoundError error with SBT 1.3.0 and it is now fixed in SBT 1.3.2.

The 1.3.0 new functionality seems to be In process class loading - however none of the values described seems to fix the issue, therefore I am not sure if it really related.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值