java - JSVC 无法注册 native 方法

标签 java ubuntu service daemon jsvc

我正在尝试创建一个用 Java 编写的将在 Ubuntu Linux 中运行的服务。我的可执行 Jar 文件是一个很大的 Jar 文件,其中包含所有依赖项。当我尝试使用 JSVC 运行它时,出现以下错误。

Java VM created successfully
Class org/apache/commons/daemon/support/DaemonLoader found
Cannot register native methods
java_init failed
Service exit with a return value of 1

让我丧命的是“无法注册 native 方法”这一行。这是什么意思以及如何解决它?

我正在使用 Eclipse IDE 用 Ja​​va 编写我的应用程序,我使用 apt-get (1.0.10-3) 安装了最新版本的 JSVC。我的 commons.daemon 库版本是 1.0.1。我的启动脚本如下。

#!/bin/sh
# Setup variables
EXEC=jsvc
JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64
CLASS_PATH="/usr/hadoop-1.1.1/lib/commons-daemon-1.0.1.jar":"/usr/devel/Hadoop_LCS/"
CLASS=com.foo.hadoop.lcs.Program
USER=hduser
PID=/tmp/lcs_process.pid
LOG_OUT=/tmp/lcs_log.out
LOG_ERR=/tmp/lcs_log.err

do_exec()
{
$EXEC -home "$JAVA_HOME" -cp $CLASS_PATH -user $USER -debug -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

最佳答案

我明白了。我刚刚升级了 Apache commons.daemon 库的版本,结果就成功了。我得到了 1.0.15。

关于java - JSVC 无法注册 native 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17050603/

相关文章:

java - 元素不可见异常 - 即使使用不同的 Selenium 等待

java - Java 中的 SIGSEGV 能否使 JVM 不崩溃?

php - MySQL 只返回查询结果中的{第一行}!

python - Distutils 在 Ubuntu 上忽略 build/lib

Ember.JS - 提交按钮运行查询并将 JSON 对象返回到模板。我是在服务中、作为模型还是在 route 运行查询?

.net - 从 WCF 服务获取实体

java - 为什么不推荐基于 AtomicInteger 的 Stream 解决方案?

java - Spring Boot + JPA + Hibernate 不同表名前缀

unix - 在没有 sudo 的情况下安装 numpy

android - 来自服务的持久性 android 通知