日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring boot 在eclipse里启动正常,但打包后启动不起来

發(fā)布時(shí)間:2025/4/5 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring boot 在eclipse里启动正常,但打包后启动不起来 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

現(xiàn)象描述:

spring boot 在eclipse里啟動正常,但打包后啟動不起來。

錯(cuò)誤日志如下:

D:\Project>java -jar MKKY_CMS.jar. ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v2.1.4.RELEASE)2019-06-12 17:26:15.510 INFO 74468 --- [ main] com.mkky.SuperviseBackstageApplication : Starting SuperviseBackstageApplication v0.0.1-SNAPSHOT on DESKTOP-405G2C8 with PID 74468 (D:\Project\MKKY_CMS.jar started by dell in D:\Project) 2019-06-12 17:26:15.513 INFO 74468 --- [ main] com.mkky.SuperviseBackstageApplication : The following profiles are active: dev 2019-06-12 17:26:16.049 WARN 74468 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.mkky.SuperviseBackstageApplication]; nested exception is java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration 2019-06-12 17:26:16.059 INFO 74468 --- [ main] ConditionEvaluationReportLoggingListener :Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2019-06-12 17:26:16.065 ERROR 74468 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.mkky.SuperviseBackstageApplication]; nested exception is java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfigurationat org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:599) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.annotation.ConfigurationClassParser.access$900(ConfigurationClassParser.java:108) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.lambda$processGroupImports$1(ConfigurationClassParser.java:808) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at java.util.ArrayList.forEach(ArrayList.java:1249) ~[na:1.8.0_91]at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.processGroupImports(ConfigurationClassParser.java:804) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.process(ConfigurationClassParser.java:774) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:185) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:315) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:232) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:705) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142) ~[spring-boot-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) [spring-boot-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) [spring-boot-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260) [spring-boot-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248) [spring-boot-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]at com.mkky.SuperviseBackstageApplication.main(SuperviseBackstageApplication.java:16) [classes!/:0.0.1-SNAPSHOT]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_91]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_91]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_91]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_91]at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [MKKY_CMS.jar:0.0.1-SNAPSHOT]at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [MKKY_CMS.jar:0.0.1-SNAPSHOT]at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [MKKY_CMS.jar:0.0.1-SNAPSHOT]at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:593) [MKKY_CMS.jar:0.0.1-SNAPSHOT] Caused by: java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfigurationat org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:64) ~[spring-boot-autoconfigure-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:108) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:218) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.annotation.ConfigurationClassParser.processMemberClasses(ConfigurationClassParser.java:361) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:263) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:242) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:589) ~[spring-context-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]... 27 common frames omitted Caused by: java.lang.IllegalArgumentException: nameat sun.misc.URLClassPath$Loader.findResource(URLClassPath.java:658) ~[na:1.8.0_91]at sun.misc.URLClassPath.findResource(URLClassPath.java:188) ~[na:1.8.0_91]at java.net.URLClassLoader$2.run(URLClassLoader.java:569) ~[na:1.8.0_91]at java.net.URLClassLoader$2.run(URLClassLoader.java:567) ~[na:1.8.0_91]at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_91]at java.net.URLClassLoader.findResource(URLClassLoader.java:566) ~[na:1.8.0_91]at org.springframework.boot.loader.LaunchedURLClassLoader.findResource(LaunchedURLClassLoader.java:57) ~[MKKY_CMS.jar:0.0.1-SNAPSHOT]at java.lang.ClassLoader.getResource(ClassLoader.java:1096) ~[na:1.8.0_91]at org.springframework.core.io.ClassPathResource.resolveURL(ClassPathResource.java:155) ~[spring-core-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.core.io.ClassPathResource.exists(ClassPathResource.java:142) ~[spring-core-5.1.6.RELEASE.jar!/:5.1.6.RELEASE]at org.springframework.boot.autoconfigure.thymeleaf.ThymeleafTemplateAvailabilityProvider.isTemplateAvailable(ThymeleafTemplateAvailabilityProvider.java:44) ~[spring-boot-autoconfigure-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]at org.springframework.boot.autoconfigure.template.TemplateAvailabilityProviders.findProvider(TemplateAvailabilityProviders.java:158) ~[spring-boot-autoconfigure-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]at org.springframework.boot.autoconfigure.template.TemplateAvailabilityProviders.getProvider(TemplateAvailabilityProviders.java:145) ~[spring-boot-autoconfigure-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]at org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$ErrorTemplateMissingCondition.getMatchOutcome(ErrorMvcAutoConfiguration.java:195) ~[spring-boot-autoconfigure-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:47) ~[spring-boot-autoconfigure-2.1.4.RELEASE.jar!/:2.1.4.RELEASE]... 33 common frames omitted

問題解決路徑

1. 最初懷疑是打包時(shí)缺少依賴包造成的,修改打包的方式

<build><finalName>xxxxx</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork><mainClass>com.xx</mainClass><layout>ZIP</layout> </configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>

依賴包沒有問題,還是報(bào)同樣的錯(cuò)誤。

2. 排除依賴包的問題后,懷疑是jar包沖突的問題,網(wǎng)上有類似的

https://stackoverflow.com/questions/32758000/java-lang-illegalstateexception-error-processing-condition-on-org-springframewo

使用dependence查了? 沒有不同版本的依賴,排除

3.懷疑是*config.java的配置問題,一個(gè)個(gè)移除進(jìn)行測試,也排除掉了

4.根據(jù)日志懷疑是Controller里排除的異常頁面有問題,排查后沒有發(fā)現(xiàn)

5.懷疑是application_*.properties的配置問題

? ?一項(xiàng)項(xiàng)排查,發(fā)現(xiàn)跟這個(gè)有關(guān)

spring.thymeleaf.prefix=static:/web/

去除這個(gè)選項(xiàng)后,重新打包后可以啟動成功。

翻看源碼ThymeleafProperties.java

/*** Properties for Thymeleaf.** @author Stephane Nicoll* @author Brian Clozel* @author Daniel Fern謾ndez* @author Kazuki Shimizu* @since 1.2.0*/ @ConfigurationProperties(prefix = "spring.thymeleaf") public class ThymeleafProperties {private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8;public static final String DEFAULT_PREFIX = "classpath:/templates/"; //1public static final String DEFAULT_SUFFIX = ".html";/*** Whether to check that the template exists before rendering it.*/private boolean checkTemplate = true;/*** Whether to check that the templates location exists.*/private boolean checkTemplateLocation = true;/*** Prefix that gets prepended to view names when building a URL.*/private String prefix = DEFAULT_PREFIX;/*** Suffix that gets appended to view names when building a URL.*/private String suffix = DEFAULT_SUFFIX;/*** Template mode to be applied to templates. See also Thymeleaf's TemplateMode enum.*/private String mode = "HTML";/*** Template files encoding.*/private Charset encoding = DEFAULT_ENCODING;/*** Whether to enable template caching.*/private boolean cache = true;/*** Order of the template resolver in the chain. By default, the template resolver is* first in the chain. Order start at 1 and should only be set if you have defined* additional "TemplateResolver" beans.*/private Integer templateResolverOrder;/*** Comma-separated list of view names (patterns allowed) that can be resolved.*/private String[] viewNames;/*** Comma-separated list of view names (patterns allowed) that should be excluded from* resolution.*/private String[] excludedViewNames;/*** Enable the SpringEL compiler in SpringEL expressions.*/private boolean enableSpringElCompiler;/*** Whether hidden form inputs acting as markers for checkboxes should be rendered* before the checkbox element itself.*/private boolean renderHiddenMarkersBeforeCheckboxes = false;/*** Whether to enable Thymeleaf view resolution for Web frameworks.*/private boolean enabled = true;private final Servlet servlet = new Servlet();private final Reactive reactive = new Reactive();public boolean isEnabled() {return this.enabled;}public void setEnabled(boolean enabled) {this.enabled = enabled;}public boolean isCheckTemplate() {return this.checkTemplate;}public void setCheckTemplate(boolean checkTemplate) {this.checkTemplate = checkTemplate;}public boolean isCheckTemplateLocation() {return this.checkTemplateLocation;}public void setCheckTemplateLocation(boolean checkTemplateLocation) {this.checkTemplateLocation = checkTemplateLocation;}public String getPrefix() {return this.prefix;}public void setPrefix(String prefix) {this.prefix = prefix;}public String getSuffix() {return this.suffix;}public void setSuffix(String suffix) {this.suffix = suffix;}public String getMode() {return this.mode;}public void setMode(String mode) {this.mode = mode;}public Charset getEncoding() {return this.encoding;}public void setEncoding(Charset encoding) {this.encoding = encoding;}public boolean isCache() {return this.cache;}public void setCache(boolean cache) {this.cache = cache;}public Integer getTemplateResolverOrder() {return this.templateResolverOrder;}public void setTemplateResolverOrder(Integer templateResolverOrder) {this.templateResolverOrder = templateResolverOrder;}public String[] getExcludedViewNames() {return this.excludedViewNames;}public void setExcludedViewNames(String[] excludedViewNames) {this.excludedViewNames = excludedViewNames;}public String[] getViewNames() {return this.viewNames;}public void setViewNames(String[] viewNames) {this.viewNames = viewNames;}public boolean isEnableSpringElCompiler() {return this.enableSpringElCompiler;}public void setEnableSpringElCompiler(boolean enableSpringElCompiler) {this.enableSpringElCompiler = enableSpringElCompiler;}public boolean isRenderHiddenMarkersBeforeCheckboxes() {return this.renderHiddenMarkersBeforeCheckboxes;}public void setRenderHiddenMarkersBeforeCheckboxes(boolean renderHiddenMarkersBeforeCheckboxes) {this.renderHiddenMarkersBeforeCheckboxes = renderHiddenMarkersBeforeCheckboxes;}public Reactive getReactive() {return this.reactive;}public Servlet getServlet() {return this.servlet;}public static class Servlet {/*** Content-Type value written to HTTP responses.*/private MimeType contentType = MimeType.valueOf("text/html");/*** Whether Thymeleaf should start writing partial output as soon as possible or* buffer until template processing is finished.*/private boolean producePartialOutputWhileProcessing = true;public MimeType getContentType() {return this.contentType;}public void setContentType(MimeType contentType) {this.contentType = contentType;}public boolean isProducePartialOutputWhileProcessing() {return this.producePartialOutputWhileProcessing;}public void setProducePartialOutputWhileProcessing(boolean producePartialOutputWhileProcessing) {this.producePartialOutputWhileProcessing = producePartialOutputWhileProcessing;}}public static class Reactive {/*** Maximum size of data buffers used for writing to the response. Templates will* execute in CHUNKED mode by default if this is set.*/private DataSize maxChunkSize = DataSize.ofBytes(0);/*** Media types supported by the view technology.*/private List<MediaType> mediaTypes;/*** Comma-separated list of view names (patterns allowed) that should be executed* in FULL mode even if a max chunk size is set.*/private String[] fullModeViewNames;/*** Comma-separated list of view names (patterns allowed) that should be the only* ones executed in CHUNKED mode when a max chunk size is set.*/private String[] chunkedModeViewNames;public List<MediaType> getMediaTypes() {return this.mediaTypes;}public void setMediaTypes(List<MediaType> mediaTypes) {this.mediaTypes = mediaTypes;}public DataSize getMaxChunkSize() {return this.maxChunkSize;}public void setMaxChunkSize(DataSize maxChunkSize) {this.maxChunkSize = maxChunkSize;}public String[] getFullModeViewNames() {return this.fullModeViewNames;}public void setFullModeViewNames(String[] fullModeViewNames) {this.fullModeViewNames = fullModeViewNames;}public String[] getChunkedModeViewNames() {return this.chunkedModeViewNames;}public void setChunkedModeViewNames(String[] chunkedModeViewNames) {this.chunkedModeViewNames = chunkedModeViewNames;}}}

配置前綴的路徑有問題。

?

轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/11011390.html

總結(jié)

以上是生活随笔為你收集整理的spring boot 在eclipse里启动正常,但打包后启动不起来的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。