我的项目要求从外部目录加载应用程序上下文bean(它应该通过Java程序参数或“classpath”参数进行管理等)。我们的想法是使用gradle创建的JAR不包含applicationContext.xml,因此可以在不重新构建JAR的情况下更新/替换它。我的Spring启动应用程序类如下所示:
@SpringBootApplication
@ImportResource({"classpath:applicationContext.xml"})
public class SampleApplication {
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
}
我的问题是如何实现这一目标?我试图将-classpath参数设置为目录位置,但它不起作用。我在应用程序启动时遇到异常(当我尝试执行JAR时):
java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist
答案 0 :(得分:0)
首先检查您的类路径的实际情况。 您可以通过以下方式完成:
System.out.println(System.getProperty("java.class.path"));
并且检查已满(或从您启动java命令的相对路径)到目录的路径就在那里。
如果没问题
在主类而不是
SpringApplication.run(SampleApplication.class, args);
试
new SampleApplication().configure(new SpringApplicationBuilder(SampleApplication.class)).run(args);
答案 1 :(得分:0)
使用
从外部目录加载applicationContext@SpringBootApplication
@ImportResource({"file:/yourfullpath/applicationContext.xml"})
public class SampleApplication {
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
}