当前位置: 首页 > 知识库问答 >
问题:

spring-无法在tomcat上运行spring启动应用程序

齐元章
2023-03-14

我下面介绍了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项目。我添加了 Webexactor作为依赖项。从 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设置


共有1个答案

萧献
2023-03-14

关于您编写的上一个错误,最有可能的是消息中给出的Maven jar文件之一已损坏

invalid LOC header (bad signature)

最简单的选择是删除整个文件。m2文件夹(Maven存储其依赖项的地方)。此存储库的位置(可能已隐藏)

  • *nix/Mac~/。m2
  • Windows C:\Documents and Settings{您的用户名}。平方米

要运行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