Как запустить скомпилированные классы Scala из другого каталога - PullRequest
0 голосов
/ 09 сентября 2010

В Windows я могу запустить скрипт Scala из другого каталога, используя пакетный скрипт, например:

Hello.bat:

@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 ]

2 голосов
/ 09 сентября 2010

(Дайте мне знать, если я неправильно понял ваш вопрос, так как я подозреваю, что вы уже знаете это ...)

Классы, которые должны быть выполнены, должны быть на пути к классам.Проще говоря, вы можете либо:

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

, либо вы можете явно указать это в вызове scala

scala -classpath /path/to/where/your/base/package/is;%CLASSPATH%
0 голосов
/ 09 сентября 2010

Только для документации:

Благодаря ответу Синессо я смог добиться этого с помощью:

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

модификатор -cp не был принят scala (под Windows), поэтому этот bat-файл временно добавляет каталог приложения в переменную среды CLASSPATH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...