2012-08-01 7 views
6

Après le README à https://github.com/magarciaEPFL/scaladotnet pour créer un exe Windows pour un simple "Bonjour tout le monde" app:Scala sur .Net HelloWorld

package hello.world 

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

Construit .exe avec la commande du 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 

lorsque vous utilisez Windows 7 Pro, 64bit, je reçois cette erreur lors d'une tentative course:

C: \ test \ bin> HelloWorld.exe

Exception non gérée: System.IO.FileNotFoundException: Impossible de charger le fichier ou assembly 'scalalib, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null' ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié. Main (String [] args)

Le répertoire du compilateur .Net Scala est directement dans le chemin, mais il semble que le HelloWorld.exe ne parvient pas à trouver et charger le scalalib.dll qui est dans ce répertoire. Selon les commentaires ci-dessous, copier le fichier HelloWorld.exe directement dans le répertoire C: \ scala.net et l'exécuter à partir de là, fonctionne comme prévu. Mais, placer le fichier .exe dans un autre répertoire, et le répertoire C: \ scala.net dans le cadre du PATH, ne le fait pas.

Qu'est-ce qui ne va pas?

+0

partagez votre code. – JSJ

+0

HelloWorld.exe et scalalib.dll sont dans le même dossier? – hmqcnoesy

+0

Non, HelloWorld.exe se trouve dans C: \ test \ bin \, et scalalib.dll se trouve dans C: \ scala.net \, C: \ scala.net faisant partie du chemin. Je m'attendais à trouver le fichier .dll, étant dans un répertoire dans le chemin. –

Répondre

6

Le .NET Framework ne suit pas Win32 en utilisant la variable d'environnement% PATH% pour localiser les assemblys. La réponse courte est: Si ce n'est pas dans le même dossier, alors il doit être dans le GAC, ou il ne sera pas trouvé.

Voir aussi this question.

+0

Les fichiers DLL d'exécution minimum que j'ai trouvé nécessaire de copier dans le répertoire .exe pour que le HelloWorld.exe fonctionne (ayant déjà un environnement d'exécution .NET récent) sont: IKVM.OpenJDK.Core.dll, IKVM.OpenJDK.Util. dll, IKVM.Runtime.dll et scalalib.dll –

+0

Excellent, réponse directe. –