jscv:找不到JVM库文件

时间:2014-09-16 12:05:22

标签: jvm daemon jsvc

当我尝试启动演示jsvc实现时,我得到jsvc的以下错误输出:

jsvc -cp ApacheDeamonDemo.jar -pidfile /mypath/pid.txt -outfile /mypath/log.txt -errfile /mypath/err.log net.example.deamon.DemoDeamon

我收到以下错误输出:

Cannot find any VM in Java Home /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home
Cannot locate JVM library file
Service exit with a return value of 1

实际上路径是正确的。因此我不明白为什么jsvc告诉我这个。我正在使用mac。

2 个答案:

答案 0 :(得分:0)

将近五年后,可能无法为原先的问询者提供帮助,但是今天我尝试在open-jdk-11上为AMD64运行jsvc时遇到了同样的问题,因此这可能会在以后帮助某个人。

为诊断问题,我用--debug标志运行了jsvc,并告诉我试图找到libjvm.so令人窒息。我运行find /usr/lib/jvm/java-11-openjdk-amd64 -name libjvm.so并在/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so中找到了它,但是jsvc在/ usr / lib / jvm / java-中寻找了它11-openjdk-amd64 // lib / amd64 /server/libjvm.so。因此,我这样做了,然后jscv起作用了:

sudo mkdir /usr/lib/jvm/java-11-openjdk-amd64/lib/amd64
sudo ln -s /usr/lib/jvm/java-11-openjdk-amd64/lib/server /usr/lib/jvm/java-11-openjdk-amd64/lib/amd64/

事实证明,此问题已在更高版本的jsvc中修复。我遇到了jsvc版本1.0.6的问题,这是在Ubuntu 18.04上运行apt install jsvc时遇到的问题。从Apache下载1.2.0版本的commons-daemon src并自己编译jsvc之后,该问题已解决,并且我不再需要符号链接。

答案 1 :(得分:-3)

不知道为什么jsvc会尝试找到所有dylib文件并使用dlopen加载它们,但显然,这与Apple的Java版本不兼容。虽然修复jsvc可能不会太难,但我只是自己就这样开启了JVM,

export JAVA_HOME=$(/usr/libexec/java_home)
export CATALINA_HOME=/Users/rong/Projects/apache-tomcat-8.0.12
export CATALINA_BASE=$CATALINA_HOME

java \
    -server \
    -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
    -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
    org.apache.catalina.startup.Bootstrap \
    > $CATALINA_BASE/logs/catalina.out \
    2> $CATALINA_BASE/logs/catalina.err

通过将其包装在bash脚本中并添加一些分叉,更改UID内容,您可以完全忘记jsvc。