【问题标题】:Can't get LWJGL to run using IDEA and SBT无法使用 IDEA 和 SBT 运行 LWJGL
【发布时间】:2014-08-05 00:27:24
【问题描述】:

我已经为此苦苦思索了一个多小时,Google 上似乎没有任何东西可以给我一个决定性的答案。

我正在使用 IntelliJ IDEA 13.1.3 与 scala 和 sbt 插件 Scala 2.11.1SBT 0.13

认为我很聪明,我将 LWJGL 的 Maven 存储库添加到我的 build.sbt 中

libraryDependencies += "org.lwjgl.lwjgl" % "lwjgl" % "2.9.1"

后来才发现我需要[point the compiler to the LWJGL natives]。

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

我尝试使用 [sbt-lwjgl-plugin] 没有任何运气,甚至像文档建议的那样强制使用早期版本的 SBT。

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

【问题讨论】:

  • 简单解决方案:创建一个名为lib 的文件夹,并将本机lwjgl jar 放在此文件夹中。这被称为unmanaged dependency in the SBT documentation。是的,托管会更好,但我不介意,因为您可能不会经常更改 lwjgl 版本。

标签: scala intellij-idea dependencies lwjgl


【解决方案1】:

您只需将以下 sn-p 添加到您的 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"
      )
    }
  }
}

遗憾的是,classifier 函数没有记录,所以我花了一些时间才找到它。

【讨论】:

  • 您必须使用“macos”而不是“mac”。总的来说,这是一个很好的答案。
【解决方案2】:

我知道这有点老了,但我认为这可能会帮助遇到这个问题的其他人。我自己做的是从站点下载 jar 文件,从 jar 中提取本地文件并将它们添加到我的资源目录中。至于 lwjgl,我像你一样将它添加到我的 sbt 项目中。在运行时,我从 jar 中提取了本机并使用

加载本机库
System.load("<native-library-name>")

然后使用

设置 lwjgl 的 natives 目录
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()

【讨论】:

    猜你喜欢
    • 2012-03-17
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 2014-09-16
    相关资源
    最近更新 更多