jscv:找不到JVM库文件

jscv:找不到JVM库文件,jvm,daemon,jsvc,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/jd

当我尝试启动一个演示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。

不知道为什么jsvc会试图找到所有的动态库文件并用dlopen加载它们,但显然,这在苹果的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。

差不多五年后,所以可能太晚了,无法帮助原始的询问者,但我今天尝试使用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///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中遇到了问题,如果在Ubuntu18.04上运行
apt install jsvc
,就会遇到这个问题。在我从Apache下载了1.2.0版本的commons daemon src并自己编译了jsvc之后,问题已经解决,我不再需要符号链接。

对不起,这不是我想要的或我想要的。我知道如何从shell启动我的程序。这不是您在这里提供的解决方案或答案!我知道现在评论已经很晚了。留在这里,如果这对将来的任何人都有帮助的话。在我的例子中,经过几个小时的调试,我的java安装是32位的,而系统是64位的。谢谢!问题仍然存在于Ubuntu20.04上,它随
JSVC1.0.15-8
一起提供,您的解决方案仍然有效。我需要这个解决方案来启动Ubuntu20.04上带有openjdk-14-jre-headless的UniFi网络控制器。