我正在尝试使用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 jsvc -user编码器-outfile /tmp/example.out -errfile /tmp/example.err -pidfile /tmp/example.pid daemonexample.DaemonExample
当我运行这个命令时,我得到:“将stdout重定向到/tmp/example.out,将stderr重定向到/tmp/example.err”。但是目标文件是空的。这里我漏掉了什么?
发布于 2012-12-31 22:54:12
检查您的/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发布于 2013-01-03 00:51:55
转储已解析的命令行参数| Detach: True |显示版本:否|显示帮助:否|仅检查:已禁用|停止: False |等待:0|作为服务运行:否|安装服务:否|删除服务:否| JVM名称:"null“| Java Home:"/Library/Java/Home”| PID文件:"/tmp/example.pid“|用户名称:“根”|额外选项:1| "-Djava.class.path=/Users/username/NetBeansProjects/DaemonExample/dist/DaemonExample.jar“|调用的类:"daemonexample.DaemonExample”|类参数:0
不需要将用户更改为“root”!用户'root‘验证的Home未在命令行上指定,使用的环境Home未在命令行或环境中,正在搜索尝试在/System/Library/Frameworks/JavaVM.framework/Home中查找Java Home尝试查找VM配置文件/System/Library/Frameworks/JavaVM.framework/Home/jre/lib/jvm.cfg尝试查找VM配置文件/System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg在/System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg中找到VM配置文件在配置检查库/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclient.中找到VM客户端定义dylib在配置检查库中找到VM jvm定义/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libjvm.dylib在配置检查库中找到VM热点定义/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libhotspot.dylib在配置检查库中找到VM服务器定义/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib在配置检查库中找到VM经典定义/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclassic.dylib找不到库对于位于客户机中的VM经典(跳过) JAVA Home,转储Java HOME结构| Java Home:"/System/Library/Frameworks/JavaVM.framework/Home“| Java VM配置:"/System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg”|找到JVM :4| /System/Library/Frameworks/JavaVM.framework/Home Name:"client“| "/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclient.dylib“| JVM名称:" JVM”|系统| JVM名称:“热点”| "/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libhotspot.dylib“|JVM名称:”服务器“|”/ "/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libjvm.dylib“/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib“
将标准输出重定向到/tmp/example.out,将标准错误重定向到/tmp/example.err
https://stackoverflow.com/questions/14101115
复制相似问题