使用-jar运行spring启动应用程序时出错
这个问题被问了一遍又一遍,但我找不到答案。我有一个使用spring boot的应用程序,intellij可以毫无问题地运行它,但是使用-jar运行spring启动应用程序时出错,spring,spring-boot,Spring,Spring Boot,这个问题被问了一遍又一遍,但我找不到答案。我有一个使用spring boot的应用程序,intellij可以毫无问题地运行它,但是java-jar echohostname.jar告诉我这个错误: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean 这是我的主要课程: public class ApplicationMain { public
java-jar echohostname.jar
告诉我这个错误:
Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean
这是我的主要课程:
public class ApplicationMain {
public static void main(String[] args) {
SpringApplicationBuilder builder = new SpringApplicationBuilder(SpringConfiguration.class);
ConfigurableApplicationContext applicationContext = builder.run(args);
}
这是我的控制器类:
@RestController
public class Controller {
@Autowired
@Qualifier("getSigarProxy")
private SigarProxy sigarProxy;
@RequestMapping(value = "/hostname", method = RequestMethod.GET)
public String hostName() throws SigarException {
return "HELLO THERE";
//return sigarProxy.getNetInfo().getHostName();
}
}
这是spring配置类:
@SpringBootApplication
@Configuration
@ComponentScan("controller")
public class SpringConfiguration {
@Bean
public static PropertySourcesPlaceholderConfigurer getPropertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean
public Sigar getSigar() {
return new Sigar();
}
@Bean
public SigarProxy getSigarProxy() {
return SigarProxyCache.newInstance(getSigar(), 1000);
}
@Bean
@Scope("prototype")
public HttpHeaders getHttpHeaders() {
return new HttpHeaders();
}
@Bean
@Scope("prototype")
public AsyncRestTemplate getRestTemplate() {
return new AsyncRestTemplate();
}
}
POM文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>echoHostname</groupId>
<artifactId>echoHostname</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.fusesource</groupId>
<artifactId>sigar</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>1.2.3.RELEASE</version>
</dependency>
</dependencies>
</project>
更新的POM:
public class ApplicationMain {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(SpringConfiguration.class, args);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>echoHostname</groupId>
<artifactId>echoHostname</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.fusesource</groupId>
<artifactId>sigar</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>1.2.7.RELEASE</version>
</dependency>
</dependencies>
</project>
4.0.0
回声主机名
回声主机名
1.0-快照
org.springframework.boot
springbootmaven插件
org.springframework.boot
spring启动程序父级
1.2.7.发布
org.fusesource
西格尔
1.6.4
org.springframework
弹簧式
4.1.4.1发布
org.springframework.boot
SpringBootStarterWeb
1.2.7.发布
org.springframework.boot
弹簧启动机tomcat
1.2.7.发布
非常感谢您的帮助。在
ApplicationMain.java
在您的pom.xml
中添加以下插件。构建maven项目并执行jar命令
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
在ApplicationMain.java
在您的pom.xml
中添加以下插件。构建maven项目并执行jar命令
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
在spring boot项目中,您需要将父pom
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
org.springframework.boot
spring启动程序父级
1.2.7.发布
您可以删除spring依赖项,如上下文、核心和bean
添加到pom中
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
org.springframework.boot
springbootmaven插件
然后再次构建jar。在spring boot项目中,您需要将父pom
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
org.springframework.boot
spring启动程序父级
1.2.7.发布
您可以删除spring依赖项,如上下文、核心和bean
添加到pom中
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
org.springframework.boot
springbootmaven插件
然后再次构建jar。是的,我也这么做了,但这样做会导致intellij也出现同样的错误尝试用ApplicationContext ctx=SpringApplication.run(ApplicationMain.class,args)替换ApplicationMain.java中的代码;还是同样的错误,它在intellij中运行,但不使用-jar命令。您使用的确切jar命令是什么?我刚刚在eclipse中试过,它可以工作。我在问题java-jar echohostname.jar
中给出了确切的命令,是的,我也这样做了,但这样做会导致intellij也给出同样的错误尝试用ApplicationContext ctx=SpringApplication.run(ApplicationMain.class,args)替换ApplicationMain.java中的代码;还是同样的错误,它在intellij中运行,但不使用-jar命令。您使用的确切jar命令是什么?我刚刚在eclipse中进行了尝试,它很管用。我在问题java-jar echohostname.jar
您使用的是maven吗?在这种情况下,请将pom添加到问题中file@reos用pomen更新了问题:你在使用maven吗?在这种情况下,请将pom添加到问题中file@reos用pom更新了这个问题,尽管如此,在intellij中运行应用程序仍然一切正常,但不运行jar filehmm,这很奇怪。我使用eclipse,您的代码运行正常。请用您的实际pom更新您的问题。尝试将@EnableAutoConfiguration添加到您的SpringConfiguration类中。No No No.dll。很奇怪,intellij内部的一切都很好,但Jarj没有。是的,很奇怪。我可以在命令行和eclipse中运行jar。我不知道可能运行maven clean然后安装maven会有帮助。就这么做了,在intellij中运行应用程序一切都很好,但不运行jar filehmm这很奇怪。我使用eclipse,您的代码运行正常。请用您的实际pom更新您的问题。尝试将@EnableAutoConfiguration添加到您的SpringConfiguration类中。No No No.dll。很奇怪,intellij内部的一切都很好,但Jarj没有。是的,很奇怪。我可以在命令行和eclipse中运行jar。我不知道运行maven clean然后安装maven可能会有帮助。