2012-08-01 10 views
6

die Readme bei https://github.com/magarciaEPFL/scaladotnet Nach einem Windows-exe für ein einfaches "Hallo Welt" App zu erstellen:Scala auf .Net Hello World

package hello.world 

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

mit dem Befehl aus dem Readme-Built .exe:

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 

Während Windows 7 Pro 64bit verwenden, erhalte ich diese Störung, wenn ein Lauf versuchen:

C: \ test \ bin> HelloWorld.exe

Unbehandelte Ausnahme: System.IO.FileNotFoundException: Kann nicht Datei oder Assembly 'scalalib, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null' oder eine ihrer Abhängigkeiten laden. Das System kann die angegebene Datei nicht finden. am Main (String [] args)

Das Compiler Verzeichnis Scala Net ist direkt im Weg, doch es scheint, dass die HelloWorld.exe nicht in der Lage ist, die scalalib.dll zu finden und zu laden, die in diesem Verzeichnis ist. Laut den folgenden Kommentaren funktioniert das Kopieren der HelloWorld.exe direkt in das Verzeichnis C: \ scala.net und das Ausführen von dort wie erwartet. Aber das Platzieren der EXE in einem anderen Verzeichnis und das C: \ scala.net-Verzeichnis als Teil des PATH nicht.

Was ist los?

+0

teilen Sie Code. – JSJ

+0

HelloWorld.exe und scalalib.dll befinden sich im selben Ordner? – hmqcnoesy

+0

Nein, HelloWorld.exe befindet sich in C: \ test \ bin \ und scalalib.dll befindet sich in C: \ scala.net \, wobei C: \ scala.net ein Teil des Pfads ist. Ich habe erwartet, dass die .dll-Datei gefunden wird und sich in einem Verzeichnis im Pfad befindet. –

Antwort

6

Das .NET Framework folgt nicht Win32 in dem% PATH% Umgebungsvariable mit Baugruppen zur Ortung.

Die kurze Antwort lautet: Wenn es nicht im selben Ordner ist, dann muss es im GAC sein, oder es wird nicht gefunden werden.

Auch sehen this question.

+0

Die minimalen Laufzeit-DLL-Dateien, die ich zum Kopieren in das .exe-Verzeichnis für HelloWorld.exe zum Arbeiten benötigte (bereits eine aktuelle .NET-Laufzeit installiert), sind: IKVM.OpenJDK.Core.dll, IKVM.OpenJDK.Util. dll, IKVM.Runtime.dll und scalalib.dll –

+0

Ausgezeichnete, direkte Antwort. –

Verwandte Themen