我想写一个服务的问题。我正在尝试创建一个在Windows系统的后台运行但使用java的服务。我已经看到了几种这样做的方法,但决定采用一种似乎符合我要求的方法。该服务将检查数据库中需要处理的项目。当它在数据库中找到它需要执行的项目时,它将运行一些系统命令来照顾它们。如何在我的jar中包含外部类
我找到了一种方法来使用tomcat7.exe文件来运行一个jar作为一项服务,这对基本的东西工作得很好。只要我写入并编译到我的jar文件“myService.jar”中,我们就可以调用它。问题是我们已经有了几个类,用于访问数据库并运行预编译在名为BGLib-1.0.jar的类库中的命令。
我已经用这个库编写了几个jenkins插件,并没有问题从它调用函数。当我创建一个hpi文件并将它部署在Jenkins中时,它们都可以正常工作。在那里,编译器(使用Maven的Eclipse)将BGLib jar与插件jar打包在一起,Jenkins计算出如何让他们看到彼此。
但是,当我构建我的服务jar时,在部署它时它不起作用。
我运行如下命令来安装Tomcat的exe文件重命名为myservice.exe:
d:\myService\bin>myService.exe //IS//myService --Install=D:\myService\bin\myService.exe --Description="run some commands
Java Service" --Jvm=auto --Classpath=D:\myService\jar\myService.jar;D:\myService\jar\BGLib-1.0.jar --StartMode=jvm --
StartClass=com.myCompany.myService.myService --StartMethod=windowsService --StartParams=start --StopMode=jvm --StopClass
=com.myCompany.myService.myService --StopMethod=windowsService --StopParams=stop --LogPath=D:\myService\logs --StdOutpu
t=auto --StdError=auto
当我单独在myService.jar如预期的服务行为代码部署这一点,但是当我尝试在BGLib-1.0.jar中调用函数,我什么也得不到。 jvm似乎崩溃或无响应。调试有点棘手,但它看起来像我没有发现类错误。
我试着在POM文件中添加下面的条目来查看在清单中更改类路径条目是否有帮助,但是它没有更改清单。对于清单文件的工作方式,我仍然无能为力。任何文档都很酷。我去过Maven的网站,它似乎没有关于可用标签的全面文档。我需要在清单中更改一些东西来让我的jar看到外部类吗?还是有什么我可以添加,将让Maven从我的jar中的jar中编译类?
在此先感谢。
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.myCompany.myService.myService</mainClass>
<customClasspathLayout>BGLib-1.0.jar</customClasspathLayout>
</manifest>
</archive>
</configuration>
你看过[maven-assembly-plugin](http://maven.apache。组织/插件/ Maven的组装插件/)?它将允许你创建一个包含你的代码,它的依赖关系,运行它的脚本等的发行版。 – sbk 2013-02-14 15:56:28