Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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 boot 如何使用spring boot禁用tomcat清单扫描?_Spring Boot_Tomcat - Fatal编程技术网

Spring boot 如何使用spring boot禁用tomcat清单扫描?

Spring boot 如何使用spring boot禁用tomcat清单扫描?,spring-boot,tomcat,Spring Boot,Tomcat,我们有一个依赖项(JAR),它确实包含一个清单文件,引用它的类路径条目中的其他JAR。应用程序不需要这些引用的其他JAR,因此不作为依赖项添加 当应用程序启动时,tomcat会尝试解析该类路径条目,最终会在日志中出现大量错误。比如: The Class-Path manifest attribute in /Users/me/.m2/repository/org/bytedeco/javacpp-presets/openblas/0.3.3-1.4.3/openblas-0.3.3-1.4.3.

我们有一个依赖项(JAR),它确实包含一个清单文件,引用它的
类路径
条目中的其他JAR。应用程序不需要这些引用的其他JAR,因此不作为依赖项添加

当应用程序启动时,tomcat会尝试解析该类路径条目,最终会在日志中出现大量错误。比如:

The Class-Path manifest attribute in /Users/me/.m2/repository/org/bytedeco/javacpp-presets/openblas/0.3.3-1.4.3/openblas-0.3.3-1.4.3.jar referenced one or more files that do not exist: file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/openblas/0.3.3-1.4.3/javacpp.jar
The Class-Path manifest attribute in /Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-platform-2019.0-1.4.3.jar referenced one or more files that do not exist: file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-linux-x86.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-linux-x86_64.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-macosx-x86_64.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-windows-x86.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-windows-x86_64.jar
The Class-Path manifest attribute in /Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl/2019.0-1.4.3/mkl-2019.0-1.4.3.jar referenced one or more files that do not exist: file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl/2019.0-1.4.3/javacpp.jar
The Class-Path manifest attribute in /Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-dnn-platform/0.16-1.4.3/mkl-dnn-platform-0.16-1.4.3.jar referenced one or more files that do not exist: file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-dnn-platform/0.16-1.4.3/mkl-dnn.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-dnn-platform/0.16-1.4.3/mkl-dnn-linux-x86_64.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-dnn-platform/0.16-1.4.3/mkl-dnn-macosx-x86_64.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-dnn-platform/0.16-1.4.3/mkl-dnn-windows-x86_64.jar
The Class-Path manifest attribute in /Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-platform-2019.0-1.4.3.jar referenced one or more files that do not exist: file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-linux-x86.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-linux-x86_64.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-macosx-x86_64.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-windows-x86.jar,file:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-windows-x86_64.jar
...
WARNING: Failed to scan [file:/Users/domi/.m2/repository/org/bytedeco/javacpp-presets/hdf5-platform/1.10.3-1.4.3/hdf5.jar] from classloader hierarchy
java.io.IOException: java.lang.reflect.InvocationTargetException
    at org.apache.tomcat.util.compat.Jre9Compat.jarFileNewInstance(Jre9Compat.java:212)
    at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:65)
    at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:49)
    at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:374)
    at org.apache.tomcat.util.scan.StandardJarScanner.processURLs(StandardJarScanner.java:309)
...
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.GeneratedConstructorAccessor78.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.apache.tomcat.util.compat.Jre9Compat.jarFileNewInstance(Jre9Compat.java:209)
    ... 49 more
Caused by: java.nio.file.NoSuchFileException: /Users/domi/.m2/repository/org/bytedeco/javacpp-presets/hdf5-platform/1.10.3-1.4.3/hdf5.jar
    at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
    at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
    at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
    at java.base/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
    at java.base/sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:145)
    at java.base/java.nio.file.Files.readAttributes(Files.java:1763)
    at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1222)
    at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:726)
...

在/Users/me/.m2/repository/org/bytedeco/javacpp presets/openblas/0.3.3-1.4.3/openblas-0.3.3-1.4.3.jar中的类路径清单属性引用了一个或多个不存在的文件:file:/Users/me/.m2/repository/org/bytedeco/javacpp presets/openblas/0.3.3-1.4.3/javacpp.jar
/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl platform/2019.0-1.4.3/mkl-platform-2019.0-1.4.3.jar中的类路径清单属性引用了一个或多个不存在的文件:file:/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl platform/2019.0-1.4.3/mkl.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-linux-x86.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-linux-x8664.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-macosx-64.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl platform/2019.0-1.4.3/mkl-windows-x86.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl platform/2019.0-1.4.3/mkl-windows-x86_64.jar
/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl/2019.0-1.4.3/mkl-2019.0-1.4.3.jar中的类路径清单属性引用了一个或多个不存在的文件:file:/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl/2019.0-1.4.3/javacpp.jar
/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl-dnn platform/0.16-1.4.3/mkl-dnn-platform-0.16-1.4.3.jar中的类路径清单属性引用了一个或多个不存在的文件:file:/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl-dnn platform/0.16-1.4.3/mkl-dnn.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl-dnn platform/0.16-1.4.3/mkl-dnn-linux-x86_64.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl-dnn platform/0.16-1.4.3/mkl-dnn-macosx-x86_64.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl-dnn platform/0.16-1.4.3/mkl-x86
/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl platform/2019.0-1.4.3/mkl-platform-2019.0-1.4.3.jar中的类路径清单属性引用了一个或多个不存在的文件:file:/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl platform/2019.0-1.4.3/mkl.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-linux-x86.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-platform/2019.0-1.4.3/mkl-linux-x8664.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp-presets/mkl-macosx-64.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl platform/2019.0-1.4.3/mkl-windows-x86.jar,文件:/Users/me/.m2/repository/org/bytedeco/javacpp presets/mkl platform/2019.0-1.4.3/mkl-windows-x86_64.jar
...
警告:未能从类加载器层次结构中扫描[file:/Users/domi/.m2/repository/org/bytedeco/javacpp presets/hdf5 platform/1.10.3-1.4.3/hdf5.jar]
java.io.IOException:java.lang.reflect.InvocationTargetException
位于org.apache.tomcat.util.compat.Jre9Compat.jarFileNewInstance(Jre9Compat.java:212)
位于org.apache.tomcat.util.scan.JarFileUrlJar.(JarFileUrlJar.java:65)
位于org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:49)
位于org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:374)
位于org.apache.tomcat.util.scan.StandardJarScanner.ProcessURL(StandardJarScanner.java:309)
...
原因:java.lang.reflect.InvocationTargetException
位于java.base/jdk.internal.reflect.GeneratedConstructorAccessor78.newInstance(未知源)
位于java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
位于org.apache.tomcat.util.compat.Jre9Compat.jarFileNewInstance(Jre9Compat.java:209)
... 49多
原因:java.nio.file.NoSuchFileException:/Users/domi/.m2/repository/org/bytedeco/javacpp presets/hdf5 platform/1.10.3-1.4.3/hdf5.jar
位于java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
位于java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
位于java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
位于java.base/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
位于java.base/sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:145)
位于java.base/java.nio.file.Files.readAttributes(Files.java:1763)
位于java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1222)
位于java.base/java.util.zip.ZipFile$CleanableResource(ZipFile.java:726)
...
如本文所述,Tomcat实现了一个开关,用于禁用清单扫描以防止此问题:

在正常的tomcat安装中,我们可以这样做():


...
如何使用spring boot禁用tomcat清单扫描?

您可以选择底部

@Bean
public TomcatServletWebServerFactory tomcatFactory() {
   return new TomcatServletWebServerFactory() {
      @Override
      protected void postProcessContext(Context context) {
         ((StandardJarScanner) context.getJarScanner()).setScanManifest(false);
   }};
}
你可以喜欢底部

@Bean
public TomcatServletWebServerFactory tomcatFactory() {
   return new TomcatServletWebServerFactory() {
      @Override
      protected void postProcessContext(Context context) {
         ((StandardJarScanner) context.getJarScanner()).setScanManifest(false);
   }};
}

可能重复的可能重复的伟大-非常感谢!这会起作用并使异常消失-是否还有一种方法可以消除以“类路径清单属性…”开头的行?太好了-非常感谢!这会起作用并使异常消失——是否有办法消除以“类路径清单属性…”开头的行?