2014-06-14 3 views
5

Ich kratze mich seit etwas mehr als einer Stunde mit dem Kopf, nichts auf Google scheint mir in der Lage zu sein, mir eine entscheidende Antwort zu geben.LWJGL kann nicht mit IDEA und SBT laufen

I IntelliJ IDEA 13.1.3 mit dem scala und sbt Plugins bin mit, Scala 2.11.1 und SBT 0.13

Denken ich klug wurde hinzugefügt ich das Maven-Repository für LWJGL meiner build.sbt

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

Erst später zu finde heraus, dass ich [point the compiler to the LWJGL natives].

Jetzt ist hier das Problem: SBT zu bitten, Bibliotheken herunterzuladen, setzt sie nicht in irgendwelchen der Projektverzeichnisse, das Zeigen auf die Bibliotheken ein bisschen schwierig machend.

Ich habe versucht, die [sbt-lwjgl-plugin] ohne Glück, sogar eine frühere Version von SBT zwingen, wie die Dokumentation suggeriert.

Also bin ich in einer Sackgasse, was soll ich tun? Die Bibliothek manuell herunterladen und in den Projektverzeichnissen ablegen? Oder gibt es einen automatischeren Weg, damit umzugehen?

+3

Einfache Lösung: Erstellen Sie einen Ordner mit dem Namen 'lib' und legen Sie die native lwjgl Glas in diesem Ordner. Dies wird als [nicht verwaltete Abhängigkeit in der SBT-Dokumentation] bezeichnet (http://www.scala-sbt.org/release/tutorial/Library-Dependencies.html#Unmanaged+dependencies). Ja, gemanagt wäre schöner, aber es würde mich nicht stören, da du wahrscheinlich deine lwjgl-Version nicht oft ändern wirst. – bluenote10

Antwort

1

Ich weiß, das ist ziemlich alt, aber ich dachte, dies könnte anderen helfen, die auf dieses Problem stoßen. Was ich selbst gemacht habe, war, die JAR-Datei von der Site herunterzuladen, die Eingeborenen aus dem Jar zu extrahieren und sie in mein Ressourcenverzeichnis einzufügen. Wie für lwjgl habe ich es meinem sbt-Projekt hinzugefügt, wie Sie es getan haben. Während der Laufzeit extrahiert ich die Eingeborenen aus dem Glas und luden die nativen Bibliotheken

System.load("<native-library-name>") 

mit dann den Eingeborenen Verzeichnis für lwjgl gesetzt mit

System.setProperty("org.lwjgl.librarypath", <natives-path>) 

Auch, wie für die Einheimischen aus Ihrer JAR-Datei zu extrahieren während Runtime, könnten Sie so etwas tun

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()