2012-08-01 10 views
6

Tras el README en https://github.com/magarciaEPFL/scaladotnet para crear un exe de Windows para una sencilla aplicación "Hello World":Scala el .Net HelloWorld

package hello.world 

object Main { 
    def main(args: Array[String]) { 
    println("Hello, World!") 
    } 
} 

Construido .exe con el comando desde el README:

scalacompiler.exe^
-d C:\test\bin^
-target:exe^
-Ystruct-dispatch:no-cache^
-Xassem-name HelloWorld.exe^
-Xassem-extdirs C:\scala.net^
-Xshow-class hello.world.Main^
C:\test\src\HelloWorld.scala 

si bien el uso de Windows 7 Pro, de 64 bits, que recibe este error al intentar una carrera:

C: \ test \ bin> HelloWorld.exe

Excepción no controlada: System.IO.FileNotFoundException: No se pudo cargar el archivo o ensamblado 'scalalib, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null' o uno de sus dependencias. El sistema no puede encontrar el archivo . en main (String [] args)

El directorio compilador Scala .Net es directamente en el camino, sin embargo, parece que el HelloWorld.exe no es capaz de encontrar y cargar el scalalib.dll que está en ese directorio. Según los comentarios a continuación, copiar HelloWorld.exe directamente en el directorio C: \ scala.net y ejecutar desde allí, funciona como se esperaba. Pero colocar el .exe en otro directorio y el directorio C: \ scala.net como parte de PATH, no lo hace.

¿Qué pasa?

+0

comparta su código. – JSJ

+0

¿HelloWorld.exe y scalalib.dll están en la misma carpeta? – hmqcnoesy

+0

No, HelloWorld.exe está en C: \ test \ bin \, y scalalib.dll está en C: \ scala.net \, con C: \ scala.net como parte de la ruta. Esperaba encontrar el archivo .dll, estando en un directorio en la ruta. –

Respuesta

6

.NET Framework no sigue a Win32 al usar la variable de entorno% PATH% para localizar ensamblados.

La respuesta breve es: si no está en la misma carpeta, entonces debe estar en el GAC o no se encontrará.

También, vea this question.

+0

Los archivos DLL de tiempo de ejecución mínimos que encontré necesarios para copiar en el directorio .exe para que funcione HelloWorld.exe (que ya tienen instalado un motor de ejecución .NET) son: IKVM.OpenJDK.Core.dll, IKVM.OpenJDK.Util. dll, IKVM.Runtime.dll y scalalib.dll –

+0

Respuesta excelente y directa. –

Cuestiones relacionadas