项目中使用maven的时候Install和package会出现error错误的解决以及jar包启动报404错误
首先我们看一下我项目的目录结构,这里我使用的是springboot,所以在pom文件里只要加入这个插件坐标就可以实现了
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

但是由于我在这个com.ning下的这个包新建了两个带有main方法的测试类,上图进行了标注,现在maven在install和package的时候就会出现如下错误,为了方便大家看,我把主要的错误截图,跟我的目录结构是一样,这里是说找不到主类是谁
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.1.11.RELEASE:repackage (repackage) on project ssh-file: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.1.11.RELEASE:repackage failed: Unable to find a single main class from the following candidates [com.ning.App, com.ning.SshTest, com.ning.test] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
现在看target目录下是可以出现了一个对应的jar包,如下图,此时项目是可以正常运行的,但是这个jar包是不能正常运行的

我们看一下本地运行这个jar包的时候会出现什么错误,我们打开idea的Terminal窗口,就会进入到项目所在的盘符的位置

然后我们输入java -jar xxxxx 这里就把刚刚生成的jar的名字复制过来就可以了,如果这个时候你发现你的maven在clean的时候都会进行报错,那么是因为你的maven仓库里面已经存在了下载的错误的jar包依赖,去找到你对应的maven下的repository,我的在c盘下的.m2文件下

这里就是我项目com目录下所需要的依赖,然后直接删除就可以了,之后去重新用maven clean一下在启动项目 就可以拿到多个主类存在所引起的错误的jar包了,这就是由于存在多个主类所引起错误(idea版版本过低的时候需要加载比较慢,如果出现依赖不起作用,建议把依赖坐标重新导入一下就可以了)

我的解决办法是去项目所在的文件下下删除不需要的测试类,只留下springboot的启动类app

我这里所有的静态html文件都在webapp目录下(jsp也是一样的),这个时候的jar包依然没有办法运行我们需要在pom文件里面的build加入下面的资源文件的访问路径,如果不加jar包运行的时候是找不到页面的,此时会报404错误

所有的静态资源文件都放在了webapp下面,需要指定resources插件处理哪个目录下的资源文件加入下面的资源访问路径即可
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<!-- 打包时将jsp文件拷贝到META-INF目录下 -->
<resource>
<!-- 指定resources插件处理哪个目录下的资源文件 -->
<directory>src/main/webapp</directory>
<!--注意此次必须要放在此目录下才能被访问到 -->
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<!-- 指定resources插件处理哪个目录下的资源文件 -->
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
本地jar包测试

本地浏览器访问

这样再次打成的jar包不管是在本地还是在远程服务器上面就都没有错误了。
项目中在使用Maven的Install和Package时遇到错误,原因是存在多个主类。解决方法是删除多余主类,保留Spring Boot启动类。此外,当jar包启动报404错误时,需在pom.xml中指定静态资源路径,确保资源文件被正确处理。完成上述步骤后,jar包即可在本地和远程服务器正常运行。

1378

被折叠的 条评论
为什么被折叠?



