gpt4 book ai didi

java - 在 Java 中运行 Daemon 类时出错?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:24 26 4
gpt4 key购买 nike

我试图在 Java 中创建一个守护进程类,所以我已经实现了一个实现守护进程的类,但是当我运行它时,我总是会出错。

我为此使用的类(class)是;

public class RemoteAgentDaemon implements Daemon {
private Logger logger;
public LocalAgent frame;

public void destroy() {
logger.info("Server was destroyed ....");
}

public void init(DaemonContext arg0) throws Exception {
frame = new LocalAgent();
logger = Logger.getLogger("daemon");
logger.addAppender(new ConsoleAppender(new PatternLayout("%d{DATE} [%t] %5p - %m%n")));
logger.setLevel(Level.ALL);
}

public void start() throws Exception {
logger.info("Server was started ....");
frame.listenSocket();
}

public void stop() throws Exception {
logger.info("Server was stoped ....");
}
}

我用来运行守护进程的脚本是;

#!/bin/sh

# Setup variables
EXEC=/usr/bin/jsvc
JAVA_HOME=/usr/lib/jvm/java-6-sun
CLASS_PATH="/usr/share/java/commons-daemon.jar":"/home/mehmet/Desktop/remoteAgent.jar"
CLASS=example.Main
USER=foo
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 $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

当我运行脚本时出现此错误;

java.lang.NoClassDefFoundError: org/apache/log4j/Layout
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2444)
at java.lang.Class.getMethod0(Class.java:2687)
at java.lang.Class.getMethod(Class.java:1620)
at org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:129)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Layout
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 5 more
Cannot load daemon
Service exit with a return value of 3

你能帮我解决这个问题吗?

谢谢大家

编辑:

现在我已经将我的类路径更改为;

CLASS_PATH="/home/mehmet/Desktop/apache-log4j-1.2.16":"/home/mehmet/Desktop/remoteAgent.jar"

但是现在我得到一个错误;

找不到返回值为 1 的守护程序加载器 org/apache/commons/daemon/support/DaemonLoader 服务退出

最佳答案

java.lang.NoClassDefFoundError: org/apache/log4j/Layout

以上表明您应该将 log4j 添加到您的类路径(在脚本中使用 log4j jar 的位置编辑 CLASS_PATH)

关于java - 在 Java 中运行 Daemon 类时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7713795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com