J'ai une application Spring Boot, un microservice
Je peux l'exécuter sans problème en tant qu'application Spring Boot
mvn clean compile spring-boot:run
Maintenant si j'essaye de la déployer dans tomcat 9 , je reçois ClassNotFoundException, montre comme s'il me manquait un pot J'ai essayé d'ajouter le pot manquant pour une application, mais il continue à venir pour les nouvelles applications. Il n'y a pas d'étapes impliquées ici, compiler, tester en autonome, puis empaqueter et déployer sur tomcat.
Quel pourrait être le problème. Je suppose que le journal réel n'est pas nécessaire ici car le problème semble être très générique
3 Réponses :
Tout d'abord, la chaussure à ressort ne nécessite pas de conteneur, vous pouvez exécuter à l'aide de Java -Jar YourSPsRingboot.war P>
Dans votre POM, le compilez-vous comme une guerre avec des dépendances? Si oui, vérifiez que sous Annuaire Web-Inf / Lib. Si vous ne pouviez pas trouver les dépendances dans le répertoire lib, cela devrait être le problème. P>
"JE SAIS" il n'a pas besoin d'un conteneur. c'est pourquoi j'ai dit que je testais comme autonome et que je déploierais ensuite dans tomcat. Le déploiement dans tomcat est une exigence commerciale.
Veuillez inclure la balise de construction suivante dans votre pom. Créez un nouveau build et un déploiement. Ça va marcher. J'ai également rencontré ce problème.
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.3.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
</plugin>
</plugins>
</build>
Mise à jour du message, veuillez vérifier maintenant.
pouvez-vous s'il vous plaît expliquer la réponse .. comment résout-il la bibliothèque manquante
La réponse est simple, claire et stupide. Si vous rencontrez un problème similaire, assurez-vous simplement que vous utilisez une version similaire de tomcat.
Mon application de démarrage de printemps fonctionnait bien, lorsqu'elle était exécutée avec mvn spring-boot: run mais mon serveur tomcat actuel était un peu plus ancien, il manquait donc quelques bibliothèques.
La mise à niveau de la version tomcat a résolu le problème
Quelle est la version tomcat du tomcat intégré pour l'application autonome?
Avez-vous une dépendance Tomcat: org.springframework.boot spring-boot-starter-tomcat fourni ?
Veuillez consulter baeldung.com/spring-boot-war-tomcat-deploy
@MohitMutha Tomcat intégré n'a aucune version mentionnée. il utilise la version à démarrage à ressort
@Kamil oui. le démarreur tomcat est présent. et l'application de démarrage à ressort étend également le servlet
@EbrahimPasbani oui .. tout est intact
@madhairsilence Le journal est donc nécessaire. Veuillez montrer que
À partir de la documentation,
Spring Boot est livré par défaut avec Tomcat 9.0.x qui prend en charge HTTP / 2 prêt à l'emploi lors de l'utilisation de JDK 9 ou version ultérieure. Sinon, HTTP / 2 peut être utilisé sur JDK 8 si la bibliothèque libtcnative et ses dépendances sont installées sur le système d'exploitation hôte.Donc, si vous utilisez JDK <9, vous empaquetez avec Tomcat 8.0 intégré.alors supprimer commencé avant de déployer dans ACTUAL tomcat?