无法在IDEA和SBT中运行LWJGL

7
我一直在琢磨这个问题已经超过一个小时了,但是在谷歌上找不到决定性的答案。
我正在使用带有 Scala 和 sbt 插件的 IntelliJ IDEA 13.1.3,Scala 版本为 2.11.1,SBT 版本为 0.13。
我以为自己很聪明,在我的 build.sbt 中添加了 LWJGL 的 Maven 仓库。
libraryDependencies += "org.lwjgl.lwjgl" % "lwjgl" % "2.9.1"

后来我才发现我需要[将编译器指向LWJGL本地文件]。

现在问题来了:要求SBT下载库,但它们并不在任何项目目录中,这使得指向库变得有点困难。

我尝试使用[sbt-lwjgl-plugin],但没有成功,甚至强制使用像文档建议的早期版本的SBT也无济于事。

所以我陷入了僵局,我该怎么办?手动下载库并将其转储到项目目录中吗?或者有更自动化的方法来处理这个问题吗?


3
简单的解决方案:创建一个名为“lib”的文件夹,并将本地lwjgl jar包放在这个文件夹中。这被称为SBT文档中的未受管理的依赖项。是的,受管理的依赖项更好些,但我认为问题不大,因为您可能不会经常更改lwjgl版本。 - bluenote10
2个回答

4

您可以通过将以下代码片段添加到您的 build.sbt 中来包含 LWJGL(包括本地文件):

libraryDependencies ++= {
  val version = "3.1.6"
  val os = "windows" // TODO: Change to "linux" or "macos" if necessary

  Seq(
    "lwjgl",
    "lwjgl-glfw",
    "lwjgl-opengl"
    // TODO: Add more modules here
  ).flatMap {
    module => {
      Seq(
        "org.lwjgl" % module % version,
        "org.lwjgl" % module % version classifier s"natives-$os"
      )
    }
  }
}

分类器函数很遗憾地没有详细的文档说明,所以我花了一些时间才找到这个。


你必须使用“macOS”而不是“mac”。总体来说,这是一个很好的答案。 - Llew Vallis

1
我知道这个问题有些老了,但我认为这可能会帮助其他遇到这个问题的人。我自己所做的是从该网站下载jar文件,从jar中提取本地文件并将其添加到我的资源目录中。至于lwjgl,我像您一样将其添加到我的sbt项目中。在运行时,我从jar中提取了本地文件并使用它们加载本地库。
System.load("<native-library-name>")

然后使用以下内容为lwjgl设置本地目录:
System.setProperty("org.lwjgl.librarypath", <natives-path>)

此外,关于在运行时从您的JAR文件中提取本地文件,您可以执行以下操作。
val source = Channels.newChannel(
NativesLoader.getClass.getClassLoader.getResourceAsStream("<native>"))

val fileOut = new File(<desination directory>, "<native path in jar>")
val dest = new FileOutputStream(fileOut)
dest.getChannel.transferFrom(source, 0, Long.MaxValue)
source.close()
dest.close()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接