Démonérisation d’un programme Java à l’aide de jsvc

J’essaie d’utiliser JSVC pour exécuter un programme Java en tant que démon. C’est le code simple que j’ai utilisé:

package daemonexample; public class DaemonExample implements Daemon { /** * @param args the command line arguments */ public static void main(Ssortingng[] args) { // TODO code application logic here } @Override public void init(DaemonContext dc) throws DaemonInitException, Exception { System.out.println("initializing ..."); } @Override public void start() throws Exception { System.out.println("starting ..."); } @Override public void stop() throws Exception { System.out.println("stopping ..."); } @Override public void destroy() { System.out.println("done."); } 

}

Et la commande: jsvc -debug -home $ JAVA_HOME -cp /path/to/commons-daemon.jar:/path/to/DaemonExample.jar -user coder -outfile /tmp/example.out -errfile / tmp / example. err -pidfile /tmp/example.pid daemonexample.DaemonExample

Quand je lance ceci, j’obtiens: “redirige stdout vers /tmp/example.out et stderr vers /tmp/example.err”. Mais les fichiers cibles sont vides. Qu’est-ce que j’oublie ici?

vérifiez votre /tmp/example.err. il devrait contenir des détails d’erreur.

Voici peut-être les problèmes:

 1: you forgot import org.apache.commons.daemon.*; ? 2: if yes, then DaemonExample.class is not getting created. 3: make sure DaemonExample.class exists in DaemonExample.jar 4: jsvc, usually must be called using full path. ie /usr/bin/jsvc .... check your debug info 

DUGING ARGUMENTS DE LA LIGNE DE COMMANDE PARSÉE | Détacher: Vrai | Afficher la version: non | Afficher l’aide: Non | Check Only: Désactivé | Stop: Faux | Attendre: 0 | Exécuter en tant que service: non | Service d’installation: Non | Supprimer le service: Non | Nom de la JVM: “null” | Java Home: “/ Library / Java / Home” | Fichier PID: “/tmp/example.pid” | Nom d’utilisateur: “root” | Options supplémentaires: 1 | “-Djava.class.path = / Users / nom d’utilisateur / NetBeansProjects / DaemonExample / dist / DaemonExample.jar” | Classe invoquée: “daemonexample.DaemonExample” | Arguments de classe: 0

Pas besoin de changer d’utilisateur pour “root”! Utilisateur ‘root’ validé Page d’accueil non spécifiée sur la ligne de commande, en utilisant l’environnement Accueil pas sur la ligne de commande ou dans l’environnement, recherche Tentative de localisation de Java Home dans /System/Library/Frameworks/JavaVM.framework/Home Tentative de localiser le fichier / système de configuration de la VM /Library/Frameworks/JavaVM.framework/Home/jre/lib/jvm.cfg Tentative de localiser le fichier de configuration de la machine virtuelle /System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg Fichier de configuration de la machine virtuelle détecté à / System / Library / Frameworks / JavaVM.framework / Home / lib / jvm.cfg Définition du client de la VM trouvée dans la configuration Vérification de la bibliothèque / System / Library /Frameworks/JavaVM.framework/Home/../Libraries/libclient.dylib Définition de la VM jvm trouvée dans la configuration Vérification de la bibliothèque / System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libjvm.dylib Définition de la zone dynamic de la machine virtuelle dans la configuration Vérification de la bibliothèque / System / Library /Frameworks/JavaVM.framework/Home/../Libraries/libhotspot .dylib Définition du serveur de machine virtuelle dans la configuration Vérification de la bibliothèque / du système / L ibrary / Frameworks / JavaVM.framework / Accueil /../ Libraries / libserver.dylib Définition de VM classique trouvée dans la configuration Vérification de la bibliothèque /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclassic.dylib Impossible de localiser la bibliothèque pour VM classique (ignorer) Java Home situé dans /System/Library/Frameworks/JavaVM.framework/Home DUMPING JAVA HOME STRUCTURE | Java Home: “/System/Library/Frameworks/JavaVM.framework/Home” | Java VM Config .: “/System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg” | JVM trouvés: 4 | Nom de la JVM: “client” | “/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclient.dylib” | Nom de la JVM: “jvm” | “/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libjvm.dylib” | Nom de la JVM: “hotspot” | “/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libhotspot.dylib” | Nom de la JVM: “serveur” | “/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib”

redirect stdout vers /tmp/example.out et stderr vers /tmp/example.err