Scala on .Net HelloWorld

时间:2012-08-01 13:20:36

标签: .net scala

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

package hello.world

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

使用自述文件中的命令构建.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

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

  

C:\测试\ BIN> HelloWorld.exe的

     

未处理的异常:System.IO.FileNotFoundException:无法加载   文件或程序集'scalalib,Version = 0.0.0.0,Culture = neutral,   PublicKeyToken = null'或其依赖项之一。系统不能   找到指定的文件。在Main(String [] args)

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

有什么问题?

1 个答案:

答案 0 :(得分:6)

.NET Framework在使用%PATH%环境变量来定位程序集时不遵循Win32。

简短的回答是:如果它不在同一个文件夹中,那么它需要在GAC中,否则将无法找到。

另请参阅this question