2014-06-14 13 views
5

Mi sono graffiato in testa per poco più di un'ora con questo, niente su Google sembra essere in grado di darmi una risposta decisiva.Impossibile eseguire LWJGL utilizzando IDEA e SBT

sto usando IntelliJ IDEA 13.1.3 con la scala e plugin SBT, Scala 2.11.1, e SBT 0.13

pensando che fossi intelligente ho aggiunto il repository Maven per LWJGL alla mia build.sbt Solo

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

a tardi scopri che ho bisogno di [point the compiler to the LWJGL natives].

Ora ecco il problema: Chiedere a SBT di scaricare le librerie, non le inserisce in nessuna delle directory del progetto, rendendo il puntamento alle librerie un po 'difficile.

Ho provato a utilizzare [sbt-lwjgl-plugin] senza alcuna fortuna, anche forzando una versione precedente di SBT come suggerisce la documentazione.

Quindi mi trovo in un vicolo cieco, cosa dovrei fare? Scaricare manualmente la libreria e scaricarla nelle directory del progetto? O c'è un modo più automatico per farmi fronte?

+3

Soluzione semplice: creare una cartella chiamata 'lib' e posizionare il barattolo nativo di lwjgl in questa cartella. Questo è riferito a [dipendenza non gestita nella documentazione SBT] (http://www.scala-sbt.org/release/tutorial/Library-Dependencies.html#Unmanaged+dependencies). Sì, gestito sarebbe più bello, ma non mi dispiacerebbe dato che probabilmente non cambierai la tua versione di lwjgl molto spesso. – bluenote10

risposta

1

So che questo è un po 'vecchio, ma ho pensato che questo potrebbe aiutare gli altri che si imbattono in questo problema. Quello che ho fatto io è stato scaricare il file jar dal sito, estrarre i nativi dal barattolo e aggiungerli alla mia directory delle risorse. Per quanto riguarda lwjgl l'ho aggiunto al mio progetto SBT come tu hai. Durante la fase di esecuzione, ho estratto i nativi dal vaso e caricato le librerie native che utilizzano

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

quindi impostare la directory nativi per lwjgl utilizzando

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

Inoltre, come per l'estrazione dei nativi dal file jar durante runtime, si potrebbe fare qualcosa del genere

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