2016-03-02 2 views
0

Я пытаюсь запустить простую программу JSVC. Однако при запуске скрипта он не запускается. Я также не получаю ошибок в файлах журналов, терминалах или любых syslogs, которые я могу найти.JSVC не запускается, и я не получаю никаких сообщений об ошибках

Не похоже, что JSVC проверяет пути класса, потому что, если я намеренно сделаю их недействительными, я не получаю сообщение об ошибке. .

Он проверяет другие параметры, на которые он будет жаловаться, если они ошибочны или отсутствуют, поэтому установлен JSVC IS.

Дом Java также должен быть правильным, поскольку он жаловался на это раньше.

Сценарий:

#!/bin/sh 

# Setup variables 
EXEC=/usr/bin/jsvc 
JAVA_HOME=/usr/lib/jvm/default-java 
CLASS_PATH="/usr/share/java/commons-daemon.jar":"/home/xxxuserxxx/Desktop/Tutorials/StackOverflow_version/EchoTest.jar" 
CLASS=Main 
USER=xxxuserxxx 
PID=/tmp/example.pid 
LOG_OUT=/tmp/example.out 
LOG_ERR=/tmp/example.err 

do_exec() 
{ 
    $EXEC -home "$JAVA_HOME" -cp $CLASS_PATH -user $USER -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID $1 -wait 20 $CLASS 
} 

case "$1" in 
    start) 
     do_exec 
      ;; 
    stop) 
     do_exec "-stop" 
      ;; 
    restart) 
     if [ -f "$PID" ]; then 
      do_exec "-stop" 
      do_exec 
     else 
      echo "service not running, will do nothing" 
      exit 1 
     fi 
      ;; 
    *) 
      echo "usage: daemon {start|stop|restart}" >&2 
      exit 3 
      ;; 
esac 

Код:

import java.util.Timer; 
import org.apache.commons.daemon.*; 

public class Main implements Daemon { 


private static Timer timer = null; 

public static void main(String[] args) { 
    System.out.println("Hello"); 
    timer = new Timer(); 
    timer.schedule(new EchoTask(), 0, 1000); 
} 

@Override 
public void init(DaemonContext dc) throws DaemonInitException, Exception { 
    System.out.println("initializing ..."); 
} 

@Override 
public void start() throws Exception { 
    System.out.println("starting ..."); 
    main(null); 
} 

@Override 
public void stop() throws Exception { 
    System.out.println("stopping ..."); 
    if (timer != null) { 
     timer.cancel(); 
    } 
} 

@Override 
public void destroy() { 
    System.out.println("done."); 
} 

} 

import java.util.Date; 
import java.util.TimerTask; 

public class EchoTask extends TimerTask { 
    @Override 
    public void run() { 
     System.out.println(new Date() + " running ..."); 
    } 
} 

ответ

0

Хорошо, я думаю, что я сделал настройки всех констант ошибки.

Код был основан на этом Q/A: How to convert a java program to daemon with jsvc?

Он начал работать после того, как я удалил параметр ожидания и расширенного путь полного класса/пакет в параметре класса.

Ошибки и выходные файлы работают, они, должно быть, были исправлены тем, что я делал ранее .. Наверное.

Смежные вопросы