我下面介绍了spring的RESTAPI,但我无法让它在tomcat服务器上运行(尝试了tomcat 7和9)。在eclipse中,我确实以-
编辑
尝试在项目上安装mvn,然后java-jarproject.jar
Failed to load Main/Class manifest attribute from project.jar
编辑2
我将项目导出到一个可运行的jar(并将所需的库打包到生成的jar中),但是
java-jar项目。jar
提供
java -jar restdemo.jar Failed to instantiate SLF4J LoggerFactory Reported exception: java.lang.NoClassDefFoundError: ch/qos/logback/core/Context at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
编辑3
我没有删除我的m2,因为那里有很多东西,但我现在通过eclipse的spring工具创建了spring start项目。我添加了
Web
和
exactor
作为依赖项。从
spring创建项目时。io
我首先注意到我的公司代理阻止获取spring父级pom:
Original error: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.5.9.RELEASE from/to <company>MavenRepository (http://maven-repository.<company>.net): Access denied to http://maven-repository.<company>.net/org/springframework/boot/spring-boot-starter-parent/1.5.9.RELEASE/spring-boot-starter-parent-1.5.9.RELEASE.pom. Error code 403, URLBlocked and 'parent.relativePath' points at wrong local POM
所以我加入了我的pom
<repositories> <repository> <id>spring-releases</id> <url>https://repo.spring.io/libs-release</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-releases</id> <url>https://repo.spring.io/libs-release</url> </pluginRepository> </pluginRepositories>
它删除maven更新后的错误。但当我运行的应用程序作为Spring启动应用程序我得到这个错误
Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationContextInitializer : org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:413) at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:392) at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:383) at org.springframework.boot.SpringApplication.initialize(SpringApplication.java:249) at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:225) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) at com.spring.rest.demo.Restdemo2Application.main(Restdemo2Application.java:10) Caused by: java.lang.NoClassDefFoundError: org/springframework/beans/BeanUtils at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:409) ... 7 more Caused by: java.lang.ClassNotFoundException: org.springframework.beans.BeanUtils at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 8 more
但是SpringCore或SpringBeans依赖项都应该通过父级导入,对吗?
这是实现:
App。类别
@SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }
欢迎控制器。java
@RestController public class GreetingController { private static final String template = "Hello, %s!"; private final AtomicLong counter = new AtomicLong(); @RequestMapping(value="/greeting", method=RequestMethod.GET) public Greeting greeting(@RequestParam(value="name", required=true) String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); } }
问候语。java
public class Greeting { private final long id; private final String content; public Greeting(long id, String content) { this.id = id; this.content = content; } public long getId() { return id; } public String getContent() { return content; } }
在Spring的部署帮助中,它说
当您运行应用程序时,SpringBoot将检测到您有一个SpringMVC控制器,并在默认情况下启动一个嵌入式ApacheTomcat7实例
但是当我按项目运行应用程序时-
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication at greeting.app.App.main(App.java:10) Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more
这些是我的tomcat设置
关于您编写的上一个错误,最有可能的是消息中给出的Maven jar文件之一已损坏
invalid LOC header (bad signature)
最简单的选择是删除整个文件。m2文件夹(Maven存储其依赖项的地方)。此存储库的位置(可能已隐藏)
要运行SpringBoot项目,您通常有两个选项:将runnable jar与嵌入式Tomcat(或其他服务器)一起使用,这是首选选项。在本例中,在创建jar之后,可以使用
java -jar yourjar.jar
它将作为服务器运行。您可以通过在pom中设置打包来实现这一点。将xml添加到jar,并将springbootmaven插件添加到插件中。这是首选方案。
另一个选择是生成一个。war文件并将其部署到应用程序服务器。在这种情况下,您将包装设置为war。
关于这个错误
java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
似乎您没有正确指定项目的依赖项。您应该将springbootstarter父项
设置为父项,并将springbootstarter
添加为依赖项。
我建议使用https://start.spring.io/
您可以设置打包,添加Web
启动器,然后就可以开始实现您的逻辑了。它还将添加所有必要的依赖项。
尝试完成Spring Boot教程:https://Spring.io/guides/gs/spring-boot/#initial 以下是我的课程: 和pom.xml: 当我尝试使用以下命令运行它时:“mvn package&&java-jar target/gs-spring-boot-0.1.0.jar”,我得到的是: “-dmaven.home=C:\program files\jetbr
无法使用maven运行spring启动应用程序。当我运行命令mvn spring boot:run时,我收到:,但在pom中。我写的xml,其中是使用该示例的主要类: 我有这个项目结构: 我希望使用spring boot和maven运行我的应用程序。但现在它不起作用了。
当我试图在Tomcat8上运行该项目时,遇到了一个非常奇怪的错误: INFO o.s.web.context.contextLoader-根WebApplicationContext:初始化已启动。信息O.S.W.C.S.AnnotationConfigWebApplicationContext-刷新根WebApplicationContext:启动日期[Mon Jun 29 10:59:34 C
在中,上下文xml下有: 在我的spring mvc中是:
我开始开发projet,现在使用windows。基本上,我可以使用maven生成一个Jar文件,但当我尝试运行Jar文件时,它并不好用。听起来好像没有找到hibernate属性。 我的错误: 我的Hibernate配置位于\src\main\Resources\application.properties 我怎么处理? [更新] 使用mvn spring boot运行时,我可能会得到不同的结果:r
我已经在tomcat服务器上安装了应用程序。在启动和加载应用程序的过程中,我有以下堆栈跟踪的错误。如何解决这个问题? apache-tomcat-7.0.47/webapps/petclinic 2016年10月27日下午12:14:36 org。阿帕奇。卡塔琳娜。果心标准上下文起始内部 严重:ServletContainerInitializer处理javax时出错。servlet。Servle