xuwujing / springBoot-study

SpringBoot学习的相关工程并辅以博文讲解。主要包括入门的Hello World、自定义配置的获取、集成mybatis的xml和注解使用、集成jpa的使用、集成druid进行项目的监控、事物实战使用, 项目打包、使用logback日志文件管理、添加过滤器和拦截器、多数据源、Restful风格的服务、集成elasticsearch、redis、netty、集成jsp和thymeleaf、集成storm、kafka等相关技术。
Apache License 2.0
1.62k stars 821 forks source link

Error: Could not find or load main class #7

Closed wurangbo closed 3 years ago

wurangbo commented 6 years ago

这个异常,如何处理,我是根据你这个改造的project, 调试模式没有问题,打包上传到nimbus上,运行 storm jar /apache-storm-1.2.2/examples/hub-0.0.1-SNAPSHOT.jar com.phoenix.hub.HubApplication phoenixTopology 出现了以上的异常,项目结构你的基本完全一致 com └─phoenix └─hub ├─configuration ├─constant ├─kafka ├─model ├─service │ └─impl ├─storm │ ├─bolt │ └─spout └─util

xuwujing commented 6 years ago

异常信息能够贴全一些吗?还有打包本地运行的的时候是怎么样的?通过什么方式打包呢?

wurangbo commented 6 years ago

bash-4.4# storm jar /apache-storm-1.2.2/examples/storm-starter/target/hub-0.0.1-SNAPSHOT.jar com.phoenix.hub.HubApplication phoenixTopology Running: /usr/lib/jvm/java-1.8-openjdk/jre/bin/java -client -Ddaemon.name= -Dstorm.options= -Dstorm.home=/apache-storm-1.2.2 -Dstorm.log.dir=/logs -Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib -Dstorm.conf.file= -cp /apache-storm-1.2.2/:/apache-storm-1.2.2/lib/:/apache-storm-1.2.2/extlib/*:/apache-storm-1.2.2/examples/storm-starter/target/hub-0.0.1-SNAPSHOT.jar:/conf:/apache-storm-1.2.2/bin -Dstorm.jar=/apache-storm-1.2.2/examples/storm-starter/target/hub-0.0.1-SNAPSHOT.jar -Dstorm.dependency.jars= -Dstorm.dependency.artifacts={} com.phoenix.hub.HubApplication phoenixTopology Error: Could not find or load main class com.phoenix.hub.HubApplication 打包用的就是 mvn package命令

xuwujing commented 6 years ago

报错提示信息是 无法找到或加载主类,你是用storm方式启动的对吧,可能用storm方式启动的和用普通方式启动的方式不一样,这点你可以查看 SpringBoot打包的方式和普通maven 打包的方式的区别。 也可以不同SpringBoot框架,试试打包部署有没有问题等等。 目前我这边没有storm环境了,所以没有在上面进行调试,所有这种问题只能帮你分析了。。。 具体解决可能还是需要自行解决了。

wurangbo commented 6 years ago

原因找到了,spring boot pom文件的 build选项中需要加入 jar-with-dependencies 的配置选项

xuwujing commented 6 years ago

解决了就好。 麻烦能发下具体配置吗,我在pom.xml中加上并更新,用来帮助更多遇到这个问题的人。

wurangbo commented 6 years ago

稍等,还有一个slf4j的冲突,我解决后再发给你

wurangbo commented 6 years ago

hi, 这个异常如何排除掉呢,琢磨了好久了。

SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/apache-storm-1.2.2/lib/log4j-slf4j-impl-2.8.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/package/hub-0.0.1-SNAPSHOT-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

xuwujing commented 6 years ago

你用exclusions 标签把 storm自带的slf4j相关的jar排除,在手动添加slf4j相关jar试试

wurangbo commented 6 years ago

这个在本地模式运行时没有问题的,但发布到storm上就出问题了,不知道要排除哪一些

xuwujing commented 6 years ago

那么看下storm安装目录下的lib架包再来确定吧

wurangbo commented 6 years ago

lib下有slf4j的 jar文件,我们的工程里也有,造成了冲突,现在要把lib下的删掉?手动去掉工程里的又没有办法编译成功

wurangbo commented 6 years ago

我把你的代码下来,打包并上传到集群,运行 storm jar /package/springboot-kafka-storm-0.0.1-SNAPSHOT-jar-with-dependencies.jar com.pancm.Application phoenixTopology 感觉还是打包设置的问题.

Caused by: java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct. at org.springframework.util.Assert.notEmpty(Assert.java:277) at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:153) at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.selectImports(AutoConfigurationImportSelector.java:95) at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:547) ... 14 common frames omitted

xuwujing commented 6 years ago

嗯,应该是SpringBoot自带的打包方式和普通Maven打包的方式不一样,你试试用普通Maven方式打包程序再到Storm集群运行试试。

wurangbo commented 6 years ago

有没有什么建议啊,哥们

xuwujing commented 6 years ago

想了一下,目前有这几个建议: 1.使用最新的storm的包; 2.用不同的打包方式尝试; 3.上述如果都不行,那么改成不用SpringBoot的整合进行尝试,然后再来慢慢的进行改造。

wurangbo commented 6 years ago

前面两个已经试了,没有成功。第三个已经做好了