eclipse解决maven项目右键run as没有run on server的问题:

问题:

在运行maven项目的时候,发现在项目上右键run as 没有run on server选项;

解决方法:在新建maven项目的时候,在packaging中选war而不选jar。

如图,通过maven建web项目时packaging里选war:

我测试过,如果Packaging里选的是jar,项目无论如何都无法作为web项目正常启动。

我也测试了另一种方法,貌似无效:

这种方法是在新建maven时Packaging里选jar,但是中间通过以下方式改成动态的web项目。

具体做法如下:

在maven项目上右键>properties>Project Facets:

可以看到当前并不是web项目,所以勾选两个选项:Dynamic Web Module、JavaScript:

如果项目中没有web.xml可以在这里进行预设置

可以点击上图中的Further configuration avaliable

之后可以看到默认配置:

如果不修改它的默认配置,会直接在项目发布路径下生成webcontent,如下图所示:

所以需要修改配置如下:

勾选生成web.xml(如果不勾选不会生成web.xml),并修改web.xml生成的所在文件夹为webapp。

点击OK,之后点击Apply即可。

如下图,已经生成webapp和内部的web.xml:

接着按照正常的项目结构,可以把webapp拖到src下main文件夹:

之后,可以在项目上右键run as,就可看到Run on server:

服务启动后,浏览器也能正常启动,但是还没完,还是会出错。

我配的欢迎页面失效了,会显示404:

看来声明为jar还是无法运行成功。

基本上,除了改成war包,还没找到其它方法解决方法。

可以看一下建立maven项目时,声明jar包与war包产生的两种pom文件区别:

jar:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.changping.shirodemo</groupId>
  <artifactId>shirodemo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</project>

war:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.changping.shirodemo01</groupId>
  <artifactId>shirodemo01</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
</project>

通过比较pom文件可以发现:声明war也就比jar多了<packaging>war</packaging>。

所以如果不想新建maven项目、或者欢迎页面不想变404的话,可以在pom文件里加上<packaging>war</packaging>,修改之后update即可。

如图是packaging修改为war,服务启动后,欢迎页面已经可以正常显示:

至于如果maven项目里webapp下没有web.xml的解决方法,除了刚才那种右键>properties>Project Facets方式以外,还可以直接从别的项目粘一个即可:

猜你喜欢

转载自www.cnblogs.com/timingstarts/p/12729811.html