以下是问题所在:
我已经使用Maven plugin One-Jar将我的Java应用程序打包到一个jar中。
现在,我想使用JSVC将应用程序作为Unix守护程序运行,即Apache Commons守护程序。
我使用JSVC的方法如下(适用于使用Maven组装插件制作的Jars等):
jsvc -user $USER -home $HOME -pidfile $PID_PATH -cp $PATH_TO_ONE_JAR my.package.MyClass错误是这样的:
jsvc.exec error: Cannot find daemon loader org/apache/commons/daemon/support/DaemonLoader
jsvc.exec error: Service exit with a return value of 1既然One-Jar使用了一个自定义的类加载器,有人知道是否可以同时使用JSVC和One-Jar吗?当我运行java jar.jar my- -jar -jar.jar时,jar运行得很好。
可以做些什么呢?
感谢你的见解!
发布于 2013-03-16 03:38:53
我必须从jsvc向classpath选项添加所有jars依赖项。jsvc似乎没有使用另一个jar中的jar
发布于 2015-05-11 15:50:31
如果您使用(文档不多的) Maven Shade Plugin而不是One-jar (它们可以实现类似的结果),那么它应该可以解决您的问题。它解压依赖的Jar并将类文件直接存储在fat jar中(而不是将jar存储在jar中)。我已经使用它创建了一个在JSVC下运行的可执行jar,并取得了一些成功。
当然,事情很少像听起来那么简单。使用Shade插件,当依赖树中存在冲突时,您可能需要对relocate classes做一些工作,或者使用resource transformers来处理非Java资源文件。但希望不是这样。
(当然,Mkyong.com也有a guide on this)
https://stackoverflow.com/questions/12864671
复制相似问题