Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Spring启动异常:java.lang.NoSuchMethodError:StandardJarScanner.setJarScanFilter(Lorg/apache/tomcat/JarScanFilter;)V_Java_Spring_Tomcat_Gradle_Spring Boot - Fatal编程技术网

Spring启动异常:java.lang.NoSuchMethodError:StandardJarScanner.setJarScanFilter(Lorg/apache/tomcat/JarScanFilter;)V

Spring启动异常:java.lang.NoSuchMethodError:StandardJarScanner.setJarScanFilter(Lorg/apache/tomcat/JarScanFilter;)V,java,spring,tomcat,gradle,spring-boot,Java,Spring,Tomcat,Gradle,Spring Boot,我能够成功地为Spring Boot应用程序(Spring Boot gradle plugin:1.2.6.RELEASE)进行gradle构建,但当我尝试运行时,出现了以下异常。我相信也有人问过类似的问题,但我应该能够根据《入门指南》使用1.2.6.RELEASE运行Spring Boot- 有没有关于如何避免这个错误的想法 下面列出了我的build.gradle,后跟异常 buildscript { repositories { mavenCentral()

我能够成功地为Spring Boot应用程序(Spring Boot gradle plugin:1.2.6.RELEASE)进行gradle构建,但当我尝试运行时,出现了以下异常。我相信也有人问过类似的问题,但我应该能够根据《入门指南》使用1.2.6.RELEASE运行Spring Boot-

有没有关于如何避免这个错误的想法

下面列出了我的
build.gradle
,后跟异常

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.6.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'

mainClassName = "com.avada.base.Application"

sourceCompatibility = 1.8
targetCompatibility = 1.8

sourceSets {
    main {
        java {
            srcDir 'src'
        }
    }
    test {
        java {
            srcDir 'test'
        }
    }
}

jar {
    baseName = 'IR360'
    version =  '6.0.0'
}

repositories {
    mavenCentral()
}

configurations {
    all*.exclude module : 'spring-boot-starter-logging'
}

dependencies {
    compile ('org.springframework.boot:spring-boot-starter-web')
    compile("org.springframework.boot:spring-boot-starter-actuator")
    testCompile("junit:junit")

    compile fileTree(dir: 'aux-lib', include: '*.jar')
    compile fileTree(dir: 'common/lib', include: '*.jar')
    compile fileTree(dir: 'WebContent/WEB-INF/lib', include: '*.jar')
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.7'
}

。\uuuuuuuuuuuu_
/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/  ___)| |_)| | | | | || (_| |  ) ) ) )
'  |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
::弹簧靴::(v1.2.6.版本)
线程“main”org.springframework.context.ApplicationContextException中出现异常:无法启动嵌入式容器;嵌套的异常是java.lang.NoSuchMethodError:org.apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter(Lorg/apache/tomcat/JarScanFilter;)V
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:474)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
位于org.springframework.boot.SpringApplication.refresh(SpringApplication.java:687)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:967)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:956)
位于com.avada.base.Application.main(Application.java:15)
原因:java.lang.NoSuchMethodError:org.apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter(Lorg/apache/tomcat/JarScanFilter;)V
位于org.springframework.boot.context.embedded.tomcat.SkipPatternJarScanner$Tomcat8TldSkipSetter.setSkipPattern(SkipPatternJarScanner.java:106)
位于org.springframework.boot.context.embedded.tomcat.SkipPatternJarScanner.setPatternToTomcat8SkipFilter(SkipPatternJarScanner.java:61)
位于org.springframework.boot.context.embedded.tomcat.SkipPatternJarScanner.(SkipPatternJarScanner.java:56)
位于org.springframework.boot.context.embedded.tomcat.SkipPatternJarScanner.apply(SkipPatternJarScanner.java:87)
位于org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.prepareContext(TomcatEmbeddedServletContainerFactory.java:168)
位于org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.GetEmbeddedServletContainerFactory(TomcatEmbeddedServletContainerFactory.java:154)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:157)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
... 还有7个
:运行失败

我可能找错了方向,但是,您是否有理由从GS指南中删除这部分gradle配置?(请注意排除语句):


从我所做的研究和过去看到的类似Spring错误来看,如果Spring在构建时以另一种方式通过Gradle包含tomcat lib(Maven脚本不需要这样做),那么缺少排除可能会覆盖它们,如果放入其中的lib版本不正确,您可能会遇到这样的错误

类路径上有一个旧的、不兼容的Tomcat版本。查看您的
build.gradle
,它一定来自您的
fileTree
依赖项之一。您应该更新它们的配置,以确保类路径上唯一的Tomcat依赖项是那些由
spring boot starter web
拉入的依赖项。如果您不确定旧的Tomcat类是从哪里加载的,那么运行带有
-verbose:class
的应用程序会告诉您。

您试过查看答案吗?@wero我将冒险探索运行的与正在编译的不同的路径,但是我使用了
gradlebuild
然后
java-jar
来运行它,所以我认为编译类和运行时类是一样的……我将深入研究它,然后confirm@CoryKlein是的-我希望在Spring Boot 1.2.6中实现这一点,而不是使用旧版本。我不相信你的问题包含了所有内容需要诊断问题。尝试包含一个重现问题的最小项目。是的-我发现当我做一个没有
fileTree
依赖项的裸体项目时,我没有任何问题。我会把这些问题一个一个解决…谢谢。
 .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.2.6.RELEASE)

Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is java.lang.NoSuchMethodError: org.apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter(Lorg/apache/tomcat/JarScanFilter;)V
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:474)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:687)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:967)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:956)
    at com.avada.base.Application.main(Application.java:15)
Caused by: java.lang.NoSuchMethodError: org.apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter(Lorg/apache/tomcat/JarScanFilter;)V
    at org.springframework.boot.context.embedded.tomcat.SkipPatternJarScanner$Tomcat8TldSkipSetter.setSkipPattern(SkipPatternJarScanner.java:106)
    at org.springframework.boot.context.embedded.tomcat.SkipPatternJarScanner.setPatternToTomcat8SkipFilter(SkipPatternJarScanner.java:61)
    at org.springframework.boot.context.embedded.tomcat.SkipPatternJarScanner.<init>(SkipPatternJarScanner.java:56)
    at org.springframework.boot.context.embedded.tomcat.SkipPatternJarScanner.apply(SkipPatternJarScanner.java:87)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.prepareContext(TomcatEmbeddedServletContainerFactory.java:168)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:154)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:157)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
    ... 7 more
:run FAILED
dependencies {
  // tag::jetty[]
  compile("org.springframework.boot:spring-boot-starter-web") {
    exclude module: "spring-boot-starter-tomcat"
}