這個問題是在用到spring時,本地IDE里面跑的很正常,但是打包后在集群上運行時報錯。
多方查找資料后確定了問題的根源,由於在依賴中調用了spring的許多包,會存在文件覆蓋的情況。
具體是
這三個文件。查看后,只剩下tx的配置了。
解決方法
第一種方法是使用maven的打包插件,在里面保留各個spring包的配置信息:
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-shade-plugin</artifactId>
- <version> 1.7.1</version>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>shade</goal>
- </goals>
- <configuration>
- <transformers>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
- <resource>META-INF/spring.handlers</resource>
- </transformer>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
- <resource>META-INF/spring.schemas</resource>
- </transformer>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
- <mainClass>com.chenzhou.test.Main</mainClass>
- </transformer>
- </transformers>
- </configuration>
- </execution>
- </executions>
- </plugin>
但是這種方法限制只能用這種maven插件打包,實際上,只要這三個文件能夠包含完整的配置信息就行了
第二種方法其實很簡單,找到這三個文件,用我提供的這三個完整的文件覆蓋即可。
通常,這三個文件都在jar包下面的META-INF路徑下