代码之家  ›  专栏  ›  技术社区  ›  Sebastián Grignoli

如何从不同的目录运行Scala编译的类

  •  0
  • Sebastián Grignoli  · 技术社区  · 14 年前

    在Windows下,我可以使用批处理脚本从不同的目录运行Scala脚本,如:

    你好,巴特:

    @scala "%~dp0Hello.scala" %*
    

    (~dp0将被转换为批处理文件所在的路径)

    c:\somedir>path\to\scala\script\Hello
    Hello World!
    c:\somedir>path\to\scala\script\Hello Moon
    Hello Moon!
    

    或者,如果脚本所在的目录已经在路径中,我可以简单地使用:

    c:\somedir>Hello
    Hello World!
    c:\somedir>Hello Moon
    Hello Moon!
    

    我不能对编译类做同样的事情:

    @scala "%~dp0Hello.class" %*
    

    @scala -howtorun:object "%~dp0Hello.class" %*
    

    也不管用

    @scala -howtorun:object "%~dp0Hello" %*
    

    @scala -howtorun:object "Hello" %*
    

    仅当我在同一目录下时有效,如下所示:

    @scala Hello %*
    

    以及:

    @cd %~dp0
    @scala Hello %*
    

    如何告诉scala在哪里找到我正在运行的类?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Synesso    14 年前

    (如果我误解了你的问题,请告诉我,因为我怀疑你已经知道了……)

    要执行的类必须在类路径上。简单地说,您可以:

    set CLASSPATH=/path/to/where/your/base/package/is;%CLASSPATH%
    

    scala -classpath /path/to/where/your/base/package/is;%CLASSPATH%
    
        2
  •  0
  •   Sebastián Grignoli    14 年前

    仅供参考:

    多亏了Synesso的回答,我才得以实现:

    @echo off
    set CLASSPATH_tmp=%CLASSPATH%
    set CLASSPATH=%~dp0;%CLASSPATH%
    call scala Hello %*
    set CLASSPATH=%CLASSPATH_tmp%
    set CLASSPATH_tmp=