J'essaie de faire une simple extension NetLogo basée sur akka. Cependant, chaque fois que je tente de charger l'extension dans NetLogo, je reçois l'erreur:Comment empaqueter un projet akka pour une extension netlogo?
Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka.version'
Ce qui signifie évidemment que certaines configuration est manquante. J'ai ensuite procédé à ajouter reference.conf à mon dossier de ressources mais sans succès.
La dernière chose que j'ai essayé a été d'utiliser le plugin sbt-assemblty, mais je continue d'avoir la même erreur. Donc, voici mon build.sbt:
name := "TestAkka"
version := "1.0"
scalaVersion := "2.11.7"
scalaSource in Compile <<= baseDirectory(_/"src")
scalacOptions ++= Seq("-deprecation", "-unchecked", "-Xfatal-warnings",
"-encoding", "us-ascii")
libraryDependencies ++= Seq(
"org.nlogo" % "NetLogo" % "5.3.0" from
"http://ccl.northwestern.edu/devel/NetLogo-5.3-17964bb.jar",
"asm" % "asm-all" % "3.3.1",
"org.picocontainer" % "picocontainer" % "2.13.6",
"com.typesafe" % "config" % "1.3.0",
"com.typesafe.akka" %% "akka-actor" % "2.4.1",
"com.typesafe.akka" %% "akka-remote" % "2.4.1"
)
artifactName := { (_, _, _) => "sample-scala.jar" }
packageOptions := Seq(
Package.ManifestAttributes(
("Extension-Name", "sample-scala"),
("Class-Manager", "main.scala.akkatest.TestClassManager"),
("NetLogo-Extension-API-Version", "5.3")))
packageBin in Compile <<= (packageBin in Compile, baseDirectory, streams) map {
(jar, base, s) =>
IO.copyFile(jar, base/"sample-scala.jar")
Process("pack200 --modification-time=latest --effort=9 --strip-debug " +
"--no-keep-file-order --unknown-attribute=strip " +
"sample-scala.jar.pack.gz sample-scala.jar").!!
if(Process("git diff --quiet --exit-code HEAD").! == 0) {
Process("git archive -o sample-scala.zip --prefix=sample-scala/ HEAD").!!
IO.createDirectory(base/"sample-scala")
IO.copyFile(base/"sample-scala.jar", base/"sample-scala"/"sample-scala.jar")
IO.copyFile(base/"sample-scala.jar.pack.gz", base/"sample-scala"/"sample-scala.jar.pack.gz")
Process("zip sample-scala.zip sample-scala/sample-scala.jar sample-scala/sample-scala.jar.pack.gz").!!
IO.delete(base/"sample-scala")
}
else {
s.log.warn("working tree not clean; no zip archive made")
IO.delete(base/"sample-scala.zip")
}
jar
}
cleanFiles <++= baseDirectory { base =>
Seq(base/"sample-scala.jar",
base/"sample-scala.jar.pack.gz",
base/"sample-scala.zip") }
J'ai un projet/assembly.sbt avec le contenu:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.1")
J'ai un assembly.sbt dans la racine avec le contenu:
import sbtassembly.AssemblyKeys._
baseAssemblySettings
Dans mon code scala je:
val configString = ConfigFactory.parseString(
"""
akka {
loglevel = "INFO"
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = "127.0.0.1"
port = "9500"
}
log-sent-messages = on
log-received-messages = on
}
}
""".stripMargin)
val config = ConfigFactory.load(configString)
Le dossier resources contient un fichier application.conf que je n'utilise pas pour le moment. Greping la sortie de commande jar tf avec l'expression « référence », montre clairement que reference.conf est présent:
Comment puis-je le paquet de ce AKKA exemple pour une extension NetLogo?
Remarque: J'ai inclus akka-actor et akka-remote comme dépendances de bibliothèque. J'utilise Intellij et SBT 0.13.8 sur une plateforme OS X.
EDIT: Après avoir pris les conseils de Ayush, je reçois la sortie suivante de la commande ensemble SBT, mais la même exception est toujours présente:
-vous préciser où exactement l'esprit que je dois ajouter que? Je reçois actuellement une exception quand je fais "sbt assembly" ... Je l'ai ajouté à assembly.sbt dans le répertoire racine du projet. – Marin
cette ligne devrait aller dans le fichier build.sbt – ayush
Je reçois une exception en disant: [info] Fusion de fichiers ... scala.MatchError: org/nlogo/forme/éditeur/EditorDialog $ 17.class (de la classe java.lang.String) – Marin