如何在MacOS X上使用JSVC包装器注册(安装)为服务java应用程序

如何在MacOS X上使用JSVC包装器注册(安装)为服务java应用程序,macos,daemon,apache-commons,jsvc,Macos,Daemon,Apache Commons,Jsvc,我有一个应用程序,我想在MacOS X上作为服务运行。我使用JSVC作为包装器,目前它在控制台中启动良好,关闭过程正确,等等。所以现在我必须将其注册为服务。找到了一些手册,写了.plist文件。接下来我执行了 sudo launchctl load /Library/LaunchDaemons/my.service.plist sudo launchctl start my.service 什么也没发生。服务没有启动 plist内容: <?xml version="1.0" encodi

我有一个应用程序,我想在MacOS X上作为服务运行。我使用JSVC作为包装器,目前它在控制台中启动良好,关闭过程正确,等等。所以现在我必须将其注册为服务。找到了一些手册,写了.plist文件。接下来我执行了

sudo launchctl load /Library/LaunchDaemons/my.service.plist
sudo launchctl start my.service
什么也没发生。服务没有启动

plist内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>my.service</string>
<key>ProgramArguments</key>
<array>
<string>/servertest/MYService</string>
<string>-jvm</string>
<string>server</string>
<string>-outfile</string>
<string>out.txt</string>
<string>-errfile</string>
<string>err.txt</string>
<string>-verbose</string>
<string>-debug</string>
<string>-home</string>
<string>/System/Library/Frameworks/JavaVM.framework/Home</string>
<string>-cp</string>
<string>./lib/hsqldb.jar:./lib/my-wrapper.jar:./lib/commons-daemon-1.0.8.jar</string>
<string>my.service.DaemonMac</string>
</array>
<key>WorkingDirectory</key>
<string>/servertest</string>
<key>StandardOutPath</key>
<string>/servertest/stdout.log</string>
<key>StandardErrorPath</key>
<string>/servertest/stderr.log</string>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

标签
我的服务
程序参数
/servertest/MYService
-虚拟机
服务器
-外锉
顺序文件
-错误文件
err.txt
-冗长的
-调试
-家
/System/Library/Frameworks/JavaVM.framework/Home
-cp
./lib/hsqldb.jar:./lib/my wrapper.jar:./lib/commons-daemon-1.0.8.jar
我的服务,代蒙麦克
工作目录
/服务器测试
标准门诊
/servertest/stdout.log
标准错误路径
/servertest/stderr.log
持久连接
运行负荷

我做错了什么?

好吧,我想没人知道。不管怎样,我自己处理的。下面是一个对我有用的例子:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <false/>
    <key>Label</key>
    <string>myserver</string>
    <key>OnDemand</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/MYServer/MYServer</string>
        <string>-server</string>
        <string>-outfile</string>
        <string>/opt/MYServer/out.txt</string>
        <string>-errfile</string>
        <string>/opt/MYServer/err.txt</string>
        <string>-verbose</string>
        <string>-debug</string>
        <string>-nodetach</string>
        <string>-home</string>
        <string>/System/Library/Frameworks/JavaVM.framework/Home</string>
        <string>-cp</string>
        <string>/opt/MYServer/lib/hsqldb.jar:/opt/MYServer/lib/my-wrapper.jar:/opt/MYServer/lib/commons-daemon-1.0.8.jar</string>
        <string>my.service.DaemonMac</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/opt/MYServer/stderr.log</string>
    <key>StandardOutPath</key>
    <string>/opt/MYServer/stdout.log</string>
    <key>WorkingDirectory</key>
    <string>/opt/MYServer</string>
</dict>
</plist>

持久连接
标签
我的服务器
OnDemand
程序参数
/opt/MYServer/MYServer
-服务器
-外锉
/opt/MYServer/out.txt
-错误文件
/opt/MYServer/err.txt
-冗长的
-调试
-节点
-家
/System/Library/Frameworks/JavaVM.framework/Home
-cp
/opt/MYServer/lib/hsqldb.jar:/opt/MYServer/lib/my wrapper.jar:/opt/MYServer/lib/commons-daemon-1.0.8.jar
我的服务,代蒙麦克
运行负荷
标准错误路径
/opt/MYServer/stderr.log
标准门诊
/opt/MYServer/stdout.log
工作目录
/opt/MYServer

如果您尝试使用绝对路径而不是相对路径,会发生什么?我在plist中使用绝对路径。相对参数是传递给JVM的参数。没关系,我到处尝试绝对路径,结果都一样。那有什么不同呢?你自己的参数得到绝对路径,还有别的吗?我们读者更容易看到使上述plist有效的差异。@akauppi如果你两年前问我,我肯定会修改我的答案。但是,由于这个问题不够有趣,无法引起广泛的关注,因此我不想费心做一个区分,也不想去回忆到底是什么错了。请原谅:-)完全理解:)