Я пытаюсь написать базовое приложение Scala, которое может работать как демон, используя commons-daemon. Следующий код был основан на программе Java в этом сообщении.
package daemon
import org.apache.commons.daemon._
import java.util.{ Timer, TimerTask, Date }
class EchoTask extends TimerTask{
def run() { println(new Date() + " running ...") }
}
object DaemonApp extends App with Daemon {
val timer = new Timer();
timer.schedule(new EchoTask(), 0, 1000);
def init(daemonContext: DaemonContext) {}
def start(){}
def stop(){}
def destroy(){}
}
это отлично работает, когда я запускаю sbt или создаю банку. Однако я не могу запустить код из jsvc. например, если я запускаю:
$ ./jsvc -cp $DAEMON_HOME/daemon.jar -pidfile $DAEMON_HOME/pidfile -errfile '&2' -outfile '&1' daemon.DaemonApp
Я получу следующее на stderr
java.lang.NoSuchMethodException: daemon.DaemonApp.init([Ljava.lang.String;)
at java.lang.Class.getMethod(Class.java:1670)
at org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:176)
Cannot load daemon
Service exit with a return value of 3
Я не понимаю, что происходит с искомым методом init(Array[String]). Есть ли что-то в том, как scalac компилирует основной класс, что делает код несовместимым с интерфейсом демона?
Спасибо!
java
или что-то подобное, вам может потребоваться добавить стандартную библиотеку scala в путь к классам. - person lmm   schedule 14.02.2015