将spring-boot项目打成war包报错

化工厂很高 2018-01-05 03:36:57
在用eclipse把一个做好的spring-boot项目进行打包时,报错了,报错如下

其实很明显,这个错误主要是在打包过程中,boot项目会有main方法,但是报错的原因就是我有好几个main方法,他不知道那个用来充当入口。
具体报错如下:
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.2.3.RELEASE:repackage (default) on project serviceone: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.2.3.RELEASE:repackage failed: Unable to find a single main class from the following candidates [com.hcycom.ssacc, com.hcycom.ssaccOne, com.hcycom.util.PropertiesUtil, com.hcycom.util.RandomUtil, com.hcycom.util.cs] -> [Help 1]
但是我查看了工程目录,将其它的main方法的类都进行了修改,再次打包后,发现还是这个错误。
我的思路有两个,是不是可以在打包前设置好固定的入口含有main的java类,或者是boot内置的依赖有缓存,没修改完的东西并没有很好的更新。
求助求助!!!
...全文
505 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
化工厂很高 2018-01-05
  • 打赏
  • 举报
回复
好了,感谢给为大牛的帮助,现在错误解决了,我来结自己的帖子。
问题出在一个文件夹上,这个很小的细节造成了我今天的这个BUG,废话不多说,这个文件截图如下:

没错,就是这个文件,这个Deployed Resources文件夹是开发工具存放部署项目的,有时候你点开会发现里面包含有编译后的.class文件,而且这个文件里面的内容,再后期你的项目进行修改后,他不会自动刷新,其原理我还没弄特别明白,有兴趣的可以百度一下。我出BUG就是因为一开始我写有好多个带有main方法的java文件,后来为了让boot项目打包识别入口main我进行了处理,但是这个文件里面的.class没有更新,在打包操作时他会加载这些.class文件,导致我的项目找不到哪一个才是入口main,证明我一开始的思路没有错。
从这次BUG总结一下:
1、遇到BUG时不要慌,从头执行一遍,看一下这个BUG是否会改变,只要不是不可重现的BUG你就可以改掉它,相信自己。
2、在修改BUG时,思路一定得好,得明白这个BUG是什么错,为什么会出现这个错误,而什么原因有可能导致这个错误出现。
3、在明确思路后,逐步的去找解决办法,当然,项目要备份,因为有可能你的修改会导致恢复不了。
4、在解决BUG后,一定要总结,学会总结是干技术很有用的能力。
化工厂很高 2018-01-05
  • 打赏
  • 举报
回复
引用 5 楼 dong_19890208 的回复:
既然你都知道是多个main方法入口导致的错误,就把多余的main方法注释掉就行了。 你是用main方法来测试吗?建议测试代码用junit实现
这个可能您没仔细的理解我的问题内容,首先多于的main方法我已经处理掉了,其次,spring-boot项目得有一个java类,类中的main方法 public static void main(String[] args) { SpringApplication.run(ssacc.class, args); logger.info("============= SpringBoot Start Success ============="); } } 就我现在学的感觉必须得有。而且,这个main方法和测试没有关系,我的项目是能跑通的,从客户端访问接口数据也是能访问到的,但是,我现在把这个项目打成war的时候,出现了BUG,这么说不知道您能明白吗?
dong_19890208 2018-01-05
  • 打赏
  • 举报
回复
既然你都知道是多个main方法入口导致的错误,就把多余的main方法注释掉就行了。 你是用main方法来测试吗?建议测试代码用junit实现
化工厂很高 2018-01-05
  • 打赏
  • 举报
回复
引用 3 楼 defonds 的回复:
  			<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
您这个方案我试了一下,没能解决,同样的我研究了一下您的解决方法,我还尝试了 <properties> <failOnMissingWebXml>false</failOnMissingWebXml> </properties> 这样的较短的版本。 现在我好像发现了一些东西,我试一下是不是这样的原因。
Defonds 2018-01-05
  • 打赏
  • 举报
回复
  			<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
化工厂很高 2018-01-05
  • 打赏
  • 举报
回复
引用 1 楼 soton_dolphin 的回复:
在 maven pom 里面加了这个plugin 了吗?
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.9.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

这是我的pom.xml中的

根据您的修改后,依然不对,应该不是这里的问题。
soton_dolphin 2018-01-05
  • 打赏
  • 举报
回复
在 maven pom 里面加了这个plugin 了吗? <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.5.9.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧