spring boot 在eclipse里启动正常,但打包后启动不起来
现象描述:
spring boot 在eclipse里启动正常,但打包后启动不起来。
错误日志如下:
- 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 failed
- 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
- at 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$WhitelabelErrorViewConfiguration
- at 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: name
- at 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. 最初怀疑是打包时缺少依赖包造成的,修改打包的方式
- <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>
依赖包没有问题,还是报同样的错误。
2. 排除依赖包的问题后,怀疑是jar包冲突的问题,网上有类似的
使用dependence查了 没有不同版本的依赖,排除
3.怀疑是*config.java的配置问题,一个个移除进行测试,也排除掉了
4.根据日志怀疑是Controller里排除的异常页面有问题,排查后没有发现
5.怀疑是application_*.properties的配置问题
一项项排查,发现跟这个有关
spring.thymeleaf.prefix=static:/web/
去除这个选项后,重新打包后可以启动成功。
翻看源码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/"; //1
- public 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;
- }
- }
- }
配置前缀的路径有问题。
spring boot 在eclipse里启动正常,但打包后启动不起来的更多相关文章
- spring boot 2.0 thymeleaf调试时正常,打包后运行报错. 找不到模板文件.
使用th:fragment 定义模板 使用 th:replace 来添加模板到需要的地方. 使用时发现一个非常奇怪的问题. 本机idea 调试环境一切正常, 但是打成jar包以后报错,提示找不到对 ...
- 解决Spring Boot 从1.x升级到 2.x 后 单点登陆(SSO)问题
解决Spring Boot 从1.x升级到 2.x 后 单点登陆(SSO)问题 在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把Spring S ...
- Spring boot + Gradle + Eclipse打war包发布总结
首先感谢两位博主的分享 http://lib.csdn.net/article/git/55444?knId=767 https://my.oschina.net/alexnine/blog/5406 ...
- spring boot框架eclipse快速搭建
1.maven安装配置好,使用eclipse创建maven项目(选择maven-archetype-quickstart) 2.然后进入http://docs.spring.io/spring-boo ...
- Spring Boot 2.2 增加了一个新功能,启动飞起~
前几天栈长分享了一个好玩的框架:一个比Spring Boot快44倍的Java框架!,是不是感觉 Spring Boot 略慢?今天讲一下 Spring Boot 添加的这个新特性,可以大大提升 Sp ...
- Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用[z]
前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊.但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文 ...
- 《spring boot》8.2章学习时无法正常启动,报“ORA-00942: 表或视图不存在 ”
在学习<spring boot>一书的过程中,由于原书作者难免有一些遗漏的的地方,或者系统.软件版本不一致.框架更新等各种因素,完全安装书中源码页不能实现项目的正常启动 在8.2章节,演示 ...
- 创建spring boot项目并添加多个模块时,启动报 错误: 找不到或无法加载主类
最近建个项目发现启动报,找不到或无法加载主类,想想肯定是自己配置出问题了,经过排查确实出问题了,(根pom中的bulid为移到子模块中去导致的),下面演示下正确的创建子模块的步奏 1. 创 ...
- Building a RESTful Web Service Using Spring Boot In Eclipse
一.构建restful web service 创建Maven的java web工程,maven的pom文件加入依赖包 创建包hello Greeting.java package hello; pu ...
随机推荐
- 在使用 Fortify进行源码扫描时需要做对项目需要做什么?
1.一般我们的项目都是svn 或git 进行管理的,为了扫出异常的问题 做好把 “” .svn “” 文件删除 2.把我们的项目需要的jar 文件放到一个文件夹内同项目一起进行扫描.这样为 ...
- afnetwork使用
Usage HTTP Request Operation Manager AFHTTPRequestOperationManager encapsulates the common patterns ...
- 关于微信开发者工具创建项目和导入项目半天不响应或者socket hang out
笔者的电脑系统是macOS Catalina(10.15),其实之前的系统版本也遇到一样的问题,网络环境是学校实验室. 解决办法:连接手机Wi-Fi 原理:目前不清楚,清楚的小伙伴可在下方留言交流
- vue router 导航守卫生命周期
导航守卫 导航守卫主要用来通过跳转或取消的方式守卫导航.有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的.(记住参数或查询的改变并不会触发进入/离开的导航守卫.你可以通过观察$r ...
- oracle_day1
本节内容: 1:oracle的服务 2:oracle 11 G 的新功能 3:数据库的三大范式 1:oracle的服务 安装完oracle 想要使用oracle 必须要启动的两个服务. 要是还想要使用 ...
- appium python demo
#coding=utf-8from appium import webdriverdesired_caps={}desired_caps["platformName"]=" ...
- springboot整合OSS实现文件上传
OSS 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务.OSS可用于图片.音视频.日志等海量文件的存储.各种终端 ...
- nginx发布静态资源
nginx发布静态资源 参考 ngx_http_index_module index指令 ngx_http_core_module http指令 location指令 listen指令 root指令 ...
- zz独家专访AI大神贾扬清:我为什么选择加入阿里巴巴?
独家专访AI大神贾扬清:我为什么选择加入阿里巴巴? Natalie.Cai 拥有的都是侥幸,失去的都是人生 关注她 5 人赞同了该文章 本文由 「AI前线」原创,原文链接:独家专访AI大神贾扬清:我 ...
- streamsets 源码构建
依赖构建工具 git 1.9+ oracle jdk 8 docker 1.10+ maven 3.3.9+ nodejs npm grunt-cli md5sum 预备构建任务 data col ...