所有
我在里面创建了一个包含以下MANIFEST.MF的jar文件:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_25-b06 (Sun Microsystems Inc.)
Main-Class: my.Main
Class-Path: . lib/spring-core-3.2.0.M2.jar lib/spring-beans-3.2.0.M2.jar
Run Code Online (Sandbox Code Playgroud)
在它的根目录中有一个名为my.config的文件,它在我的spring-context.xml中引用,如下所示:
<bean id="..." class="...">
<property name="resource" value="classpath:my.config" />
</bean>
Run Code Online (Sandbox Code Playgroud)
如果我运行jar,除了加载特定文件外,一切看起来都很好:
Caused by: java.io.FileNotFoundException: class path resource [my.config] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/D:/work/my.jar!/my.config
at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:205)
at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:52)
at eu.stepman.server.configuration.BeanConfigurationFactoryBean.getObject(BeanConfigurationFactoryBean.java:32)
at eu.stepman.server.configuration.BeanConfigurationFactoryBean.getObject(BeanConfigurationFactoryBean.java:1)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
... 22 more
Run Code Online (Sandbox Code Playgroud)
有小费吗?
我有一个JAR文件,我想注册并将其作为Windows服务运行.通过配置良好的JAR和已经注册的JVM关闭挂钩,这不应该是一件大事.
我已经有一个带外部lib目录的JAR ,我可以启动它java -jar My.jar并停止Ctrl+C.
我还检查了Apache的JSL,JSmooth和procrun没有可行的解决方案.
我需要一个有良好教程的工作解决方案.
更新:我成功同时procrun(最后)和手动.net服务包装器......这是我的install.bat的procrun版本的代码:
set PR_PATH=%CD%
SET PR_SERVICE_NAME=MyService
SET PR_JAR=MyService.jar
SET START_CLASS=org.my.Main
SET START_METHOD=main
SET STOP_CLASS=java.lang.System
SET STOP_METHOD=exit
rem ; separated values
SET STOP_PARAMS=0
rem ; separated values
SET JVM_OPTIONS=-Dapp.home=%PR_PATH%
prunsrv.exe //IS//%PR_SERVICE_NAME% --Install="%PR_PATH%\prunsrv.exe" --Jvm=auto --Startup=auto --StartMode=jvm --StartClass=%START_CLASS% --StartMethod=%START_METHOD% --StopMode=jvm --StopClass=%STOP_CLASS% --StopMethod=%STOP_METHOD% ++StopParams=%STOP_PARAMS% --Classpath="%PR_PATH%\%PR_JAR%" --DisplayName="%PR_SERVICE_NAME%" ++JvmOptions=%JVM_OPTIONS%
Run Code Online (Sandbox Code Playgroud)
我认为
感谢apache procrun团队(http://commons.apache.org/proper/commons-daemon//procrun.html)和marifnst(http://a089lp.wordpress.com/tag/procrun-tutorial/)
更新2:winsv的一个新的好教程:https://dzone.com/articles/spring-boot-as-a-windows-service-in-5-minutes
我认为许多专业人士没有转向注释驱动的依赖注入的主要原因是它不支持在开发/测试/生产环境之间切换.出于开发目的,在许多情况下,您不仅使用不同的服务(以及它们的连接),但有时您需要模拟它们,或创建Dummy实例.
昨天我找到了一个带有Spring注释的解决方案:
@Value("#{${env} == "production" ? realService : dummyService}")
private SomeService service;
Run Code Online (Sandbox Code Playgroud)
......哪个应该有用,但不好看.
我会对你的解决方案或论点非常感兴趣:为什么它不是一个真正的问题;-) Guice,Spring或其他任何欢迎.
原始问题是这个主题的一部分:Spring @Autowired用法,但我认为值得创建一个新线程.