Tomcat не сканирует JAR-файлы внутри JAR-файлов - PullRequest
1 голос
/ 25 октября 2019

У меня есть два веб-приложения (скажем, A.war и B.war), которые используют какой-то общий фрагмент кода (например, C.jar) для обмена информацией. Итак, что я сделал в POM-файле двух веб-приложений, я добавил JAR с областью «предоставлено».

<dependency>
    <groupId>some.web.app</groupId>
    <artifactId>C</artifactId>
    <version>${project.version}</version>
    <type>jar</type>
    <scope>provided</scope>
</dependency>

И скопировал C.jar в папку lib Tomcat, чтобы он был доступен для общего доступа. ,Поэтому, когда я пытаюсь развернуть любой из war-файлов, скопировав war-файл в папку webapps и запустив Tomcat, я вижу кучу недостающих ошибок JAR при запуске:

25-Oct-2019 15:07:43.752 WARNING [main] org.apache.tomcat.util.scan.StandardJarScanner.processURLs Failed to scan [file:/H:/apache-tomcat-9.0.27/lib/logback-classic-1.1.3.jar] from classloader hierarchy
    java.io.FileNotFoundException: H:\apache-tomcat-9.0.27\lib\logback-classic-1.1.3.jar (The system cannot find the file specified)
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:225)

Но все JAR-файлы, которыеTomcat жалуется на то, что находится в папке lib в C.jar. Есть ли способ сделать JAR сканирования Tomcat внутри C.jar. Я не уверен, правильно ли то, что я делаю. Я играл с Tomcat / Maven раньше, но никогда не вдавался в детали. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 04 ноября 2019

У меня для параметра scanManifest в JARScanner установлено значение true в context.xml Tomcat. Я установил значение false и ошибка исчезла.

<JarScanner scanAllDirectories="true" scanAllFiles="true" scanBootstrapClassPath="true" scanClassPath="true" scanManifest="false" />
...