gpt4 book ai didi

带有 SBT 的 Scala SWT 项目

转载 作者:行者123 更新时间:2023-12-04 00:48:06 26 4
gpt4 key购买 nike

如何在 SBT 中创建 Scala SWT 项目?

我知道您可以使用 GIT 存储库:

RootProject(uri("http://git.eclipse.org/gitroot/platform/eclipse.platform.swt.binaries.git"))

但我不知道如何以及是否可以使用 SWT。

提前致谢,
埃塔姆。

编辑 :

我不得不手动下载它。它编译但在运行时出现无效线程访问错误:
***WARNING: Display must be created on main thread due to Cocoa restrictions.
[error] (run-main) org.eclipse.swt.SWTException: Invalid thread access

即使我使用:
javaOptions := Seq("-XstartOnFirstThread", "-d64")

这是主类:
import org.eclipse.swt._
import org.eclipse.swt.layout._
import org.eclipse.swt.widgets._

object Main extends App {
val display = new Display
val shell = new Shell(display)
shell.setLayout(new GridLayout())
shell.pack
shell.open
while (!shell.isDisposed) {
if (!display.readAndDispatch)
display.sleep
}
display.dispose
}

再次感谢,
埃塔姆。

最佳答案

将此添加到您的 build.sbt :

resolvers += "swt-repo" at "http://maven-eclipse.github.io/maven"

libraryDependencies += {
val os = (sys.props("os.name"), sys.props("os.arch")) match {
case ("Linux", _) => "gtk.linux.x86"
case ("Mac OS X", "amd64" | "x86_64") => "cocoa.macosx.x86_64"
case ("Mac OS X", _) => "cocoa.macosx.x86"
case (os, "amd64") if os.startsWith("Windows") => "win32.win32.x86_64"
case (os, _) if os.startsWith("Windows") => "win32.win32.x86"
case (os, arch) => sys.error("Cannot obtain lib for OS '" + os + "' and architecture '" + arch + "'")
}
val artifact = "org.eclipse.swt." + os
"org.eclipse.swt" % artifact % "4.6.1"
}

它将首先为 SWT 工件存储库添加一个解析器。
然后它将检测您的操作系统版本并为其下载适当的 JAR。

至于线程访问问题,我在 Mac OS X 上使用 JDK 1.6 解决了这个问题 - 当我指定 -XstartOnFirstThread 时在那里,它工作正常。我没有找到 JDK 1.7 的解决方案。

关于带有 SBT 的 Scala SWT 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9033292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com