1

JSVC を使用して Java プログラムをデーモンとして実行しようとしています。これは私が使用した簡単なコードです:

package daemonexample;
public class DaemonExample implements Daemon {

/**
 * @param args the command line arguments
 */
public static void main(String[] 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.");
}

}

コマンド: 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 デーモンexample.DaemonExample

これを実行すると、「stdout を /tmp/example.out に、stderr を /tmp/example.err にリダイレクトしています」というメッセージが表示されます。しかし、ターゲットファイルは空です。ここで何が欠けていますか?

4

2 に答える 2

0

/tmp/example.errをチェックアウトします。エラーの詳細が含まれている必要があります。

以下が問題である可能性があります。

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. i.e. /usr/bin/jsvc .... check your debug info
于 2012-12-31T14:54:11.677 に答える
-2

解析されたコマンドライン引数のダンプ | デタッチ: True | バージョンを表示: いいえ | ヘルプを表示: いいえ | チェックのみ: 無効 | 停止: 偽 | 待機: 0 | サービスとして実行: いいえ | インストール サービス: いいえ | サービスの削除: いいえ | JVM 名: "null" | Java ホーム: "/Library/Java/Home" | PID ファイル: "/tmp/example.pid" | ユーザー名: 「ルート」 | 追加オプション: 1 | "-Djava.class.path=/Users/username/NetBeansProjects/DaemonExample/dist/DaemonExample.jar" | 呼び出されたクラス: "daemonexample.DaemonExample" | クラス引数: 0

ユーザーを「root」に変更する必要はありません! ユーザー 'root' が検証済み ホームがコマンド ラインで指定されていない、環境を使用 ホーム コマンド ラインまたは環境でホームが指定されていない、検索中 /System/Library/Frameworks/JavaVM.framework/Home で Java ホームを見つけようとしている VM 構成ファイル /System を見つけようとしている/Library/Frameworks/JavaVM.framework/Home/jre/lib/jvm.cfg VM 構成ファイルを見つけようとしています /System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg /System/ に VM 構成ファイルが見つかりましたLibrary/Frameworks/JavaVM.framework/Home/lib/jvm.cfg 構成内に VM クライアント定義が見つかりましたライブラリ /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libjvm を確認しています。dylib 構成内に VM ホットスポット定義が見つかりました ライブラリ /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libhotspot.dylib 構成内に VM サーバー定義が見つかりました/../Libraries/libserver.dylib 構成内に VM クラシック定義が見つかりました ライブラリをチェックしています /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclassic.dylib VM クラシックのライブラリが見つかりません (スキップ) Java ホームが見つかりました/System/Library/Frameworks/JavaVM.framework/Home で Java ホーム構造をダンプ | Java ホーム: "/System/Library/Frameworks/JavaVM.framework/Home" | Java VM 構成: "/System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg" | 見つかった JVM: 4 | JVM 名: "クライアント" | "

stdout を /tmp/example.out にリダイレクトし、stderr を /tmp/example.err にリダイレクトします

于 2013-01-02T16:51:55.290 に答える