springboot记一次bug
报错信息:
java.io.FileNotFoundException: /usr/local/businesslogannalyzejob.jar!/BOOT-INF/classes (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.
at java.io.FileInputStream.
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
at java.net.URL.openStream(URL.java:1038)
at com.ly.hotel.businesslogannalyzejob.common.util.ClassScannerHelper.scanFromJarProtocol(ClassScannerHelper.java:101)
at com.ly.hotel.businesslogannalyzejob.common.util.ClassScannerHelper.scan(ClassScannerHelper.java:40)
at com.ly.hotel.businesslogannalyzejob.job.MqJobs.getAllConsumers(MqJobs.java:51)
at com.ly.hotel.businesslogannalyzejob.job.MqJobsEnhancerBySpringCGLIBeab52fed.CGLIB$getAllConsumers$0(
at com.ly.hotel.businesslogannalyzejob.job.MqJobsEnhancerBySpringCGLIBeab52fedFastClassBySpringCGLIB88f28351.invoke(
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361)
at com.ly.hotel.businesslogannalyzejob.job.MqJobsEnhancerBySpringCGLIBeab52fed.getAllConsumers(
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
后来查出问题是由于springboot打包后获取jar包里的class时文件名称会变成.jar!/BOOT-INF/classes类似的格式
在方法中屏蔽BOOT-INF/classes即可
还没有评论,来说两句吧...