Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring-无法在tomcat上运行spring启动应用程序_Java_Spring_Spring Mvc_Tomcat - Fatal编程技术网

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

Java spring-无法在tomcat上运行spring启动应用程序,java,spring,spring-mvc,tomcat,Java,Spring,Spring Mvc,Tomcat,我正在跟踪一个,但我无法让它在tomcat服务器上运行(尝试了tomcat 7和9)。在eclipse中,我确实以->运行配置->ApacheTomcat的方式运行,它启动Tomcat时没有错误,但在浏览器中,我得到一个404错误() 编辑 尝试在项目上mvn clean安装,然后java-jarproject.jar给出 编辑2 我将项目导出到一个可运行的jar(并将所需的库打包到生成的jar中),但是java-jar project.jar java -jar restdemo.jar

我正在跟踪一个,但我无法让它在tomcat服务器上运行(尝试了tomcat 7和9)。在eclipse中,我确实以->运行配置->ApacheTomcat的方式运行,它启动Tomcat时没有错误,但在浏览器中,我得到一个404错误()


编辑

尝试在项目上
mvn clean安装
,然后
java-jarproject.jar
给出

编辑2

我将项目导出到一个可运行的jar(并将所需的库打包到生成的jar中),但是
java-jar project.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
GreetingController.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));
    }
}
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;
    }
}
Greeting.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));
    }
}
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;
    }
}
上面说

当您运行应用程序时,SpringBoot将检测到您有一个SpringMVC控制器,并在默认情况下启动一个嵌入式ApacheTomcat7实例

但是当我通过project->run->java应用程序运行应用程序时,我得到

 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存储其依赖项的地方)。此存储库的位置(可能已隐藏)

  • *尼克斯/麦克~/.m2
  • Windows C:\Documents and Settings{您的用户名}.m2
要运行SpringBoot项目,通常有两个选项 将runnable jar与嵌入式Tomcat(或其他服务器)一起使用,这是首选选项。在本例中,在创建jar之后,可以使用

java -jar yourjar.jar
它将作为服务器运行。 您可以通过将pom.xml中的packaging设置为jar并将springbootmaven插件添加到插件中来实现这一点。 这是首选方案

另一个选项是生成.war文件并将其部署到应用程序服务器。 在这种情况下,您将包装设置为war

关于这个错误

    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
java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
似乎您没有正确指定项目的依赖项。您应该将
springbootstarter父项
设置为父项,并将
springbootstarter
添加为依赖项

我建议使用

您可以设置包装,添加
Web
starter,您就可以开始了
开始实现您的逻辑。它还将添加所有必要的依赖项。

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

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

  • *尼克斯/麦克~/.m2
  • Windows C:\Documents and Settings{您的用户名}.m2
要运行SpringBoot项目,通常有两个选项 将runnable jar与嵌入式Tomcat(或其他服务器)一起使用,这是首选选项。在本例中,在创建jar之后,可以使用

java -jar yourjar.jar
它将作为服务器运行。 您可以通过将pom.xml中的packaging设置为jar并将springbootmaven插件添加到插件中来实现这一点。 这是首选方案

另一个选项是生成.war文件并将其部署到应用程序服务器。 在这种情况下,您将包装设置为war

关于这个错误

    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
java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
似乎您没有正确指定项目的依赖项。您应该将
springbootstarter父项
设置为父项,并将
springbootstarter
添加为依赖项

我建议使用

您可以设置包装,添加
Web
starter,您就可以开始了
开始实现您的逻辑。它还将添加所有必要的依赖项。

我猜您的一个jar已损坏。您是如何创建project.jar的?如果您使用的是SpringBoot,那么您需要使用嵌入式Tomcat服务器来运行它。尝试运行Run->Java应用程序,它将启动嵌入式tomcat,您的代码将部署在tomcat中。如果它不是这样工作的,那么请粘贴您的pom.xml,可能是某些依赖项设置不正确。我猜您的一个JAR已损坏。您是如何创建project.jar的?如果您使用的是SpringBoot,那么您需要使用嵌入式Tomcat服务器来运行它。尝试运行Run->Java应用程序,它将启动嵌入式tomcat,您的代码将部署在tomcat中。如果它不是这样工作的,那么请粘贴您的pom.xml,可能是某些依赖项设置不正确。@tenticon是的,它应该添加这些依赖项。我仍然认为您的.m2中有一个已损坏的依赖项,因此它无法工作。当Maven遇到403时(有时),它会用HTML消息编写jar。请检查spring boot starter web是否有效(通过实际从.m2文件夹中以zip格式打开它)。如果无效,请将其删除。还要检查.m2文件夹中是否有空罐子。运行Maven依赖关系树,检查依赖关系(是否导入了springbean和core)。@tenticon是的,它应该添加这些依赖关系。我仍然认为您的.m2中有一个已损坏的依赖项,因此它无法工作。当Maven遇到403时(有时),它会用HTML消息编写jar。请检查spring boot starter web是否有效(通过实际从.m2文件夹中以zip格式打开它)。如果无效,请将其删除。还要检查.m2文件夹中是否有空罐子。运行Maven依赖关系树,检查依赖关系(是否导入了springbean和core)。