2011-06-11 8 views
20

mi programa scala usa la interfaz del compilador de scala.tools.nsc.interpreter.IMain. Cuando estoy compilando con scalac, todo funciona como se esperaba. Pero cuando compilo con SBT todavía compila, pero en la ejecución que arroja el siguiente mensaje de error en la llamada del método de interpretar a partir de la instancia IMain:¿Cómo llamar al intérprete scala en un proyecto Simple Build Tool?

Failed to initialize compiler: object scala not found. 
** Note that as of 2.8 scala does not assume use of the java classpath. 
** For the old behavior pass -usejavacp to scala, or if using a Settings 
** object programatically, settings.usejavacp.value = true. 

Si uso settings.usejavacp.value = true en la instancia IMain, me sale el siguiente excepción:

java.lang.Error: typeConstructor inapplicable for <none> 

Mi proyecto SBT definición:

class Project(info: ProjectInfo) extends DefaultProject(info){ 
    val scalaSwing = "org.scala-lang" % "scala-swing" % "2.9.0" 
    val scalaCompiler = "org.scala-lang" % "scala-compiler" % "2.9.0" 
} 

¿Qué pasa aquí? ¿Y cómo puedo usar el intérprete en un proyecto de herramienta de construcción simple?

estoy usando Scala 2.9.0 y herramienta de construcción simple 0.7.7

+1

lo haces * * tenedor cuando se ejecuta? Si no, inténtalo primero. Ver http://code.google.com/p/simple-build-tool/wiki/Forking – huynhjl

+1

Gracias, esto casi fue el truco. Agregué 'anular def fork = forkRun' a la definición del proyecto. El intérprete puede ejecutar código simple, pero no puede crear instancias de clases definidas en el proyecto. Podría agregar un directorio de trabajo para el tenedor. Pero, ¿cuál debería tomar? – man

+0

Después de experimentar con algunas rutas, está trabajando con: 'override def fork = forkRun (new File (" target/scala_2.9.0/classes "))' ¿No es una especie de solución incorrecta? – man

Respuesta

23
sbt console // Starts a Scala interpreter 

Aquí es el nuevo FAQ (la respuesta anterior es obsoleto)

http://www.scala-sbt.org/0.12.4/docs/faq.html

También puede encontrar la AYUDA para las versiones más recientes.
Tenga en cuenta que sbt console-quick carga la consola sin las dependencias.

+0

Su enlace 404s. – 2rs2ts

+0

actualizado. Gracias –

1

En las versiones más recientes de SBT (0.12 y posteriores), lo siguiente debería ser suficiente:

fork in run := true 
Cuestiones relacionadas