6

按照https://github.com/magarciaEPFL/scaladotnet上的 README 为简单的“Hello World”应用程序创建一个 Windows exe:

package hello.world

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

使用 README 中的命令构建 .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

在使用 64 位 Windows 7 Pro 时,我在尝试运行时收到此错误:

C:\test\bin>HelloWorld.exe

未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“scalalib,版本=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。在主要(字符串 [] 参数)

Scala .Net 编译器目录直接位于路径中,但 HelloWorld.exe 似乎无法找到并加载该目录中的 scalalib.dll。根据下面的评论,将 HelloWorld.exe 直接复制到 C:\scala.net 目录中,然后从那里执行,可以按预期工作。但是,将 .exe 放入另一个目录,并将 C:\scala.net 目录作为 PATH 的一部分,则不会。

怎么了?

4

1 回答 1

6

The .NET Framework does not follow Win32 in using the %PATH% environment variable for locating assemblies.

The short answer is: If it's not in the same folder, then it needs to be in the GAC, or it won't be found.

Also, see this question.

于 2012-08-01T14:38:36.020 回答