如何在Eclipse中使用Tomcat 8?

51

编辑 2014年2月7日:Eclipse Luna发布了,支持Tomcat 8 已经包含在捆绑的WTP中:)开心!

Tomcat 8仍在开发中,但您可以在这里获取它。现在主要Apache Tomcat页面上有一个RC版本。更新于2/27/14: 8已发布,为WTP构建了适配器,只是还没有集成到eclipse bundles中。很快!

然而,在Eclipse Kepler中,添加服务器列表中没有Tomcat 8的受支持适配器。Tomcat 7适配器不起作用,并且似乎没有新的扩展可在“安装新扩展”对话框中下载。

我唯一的选择是在Eclipse之外在本地运行它(Tomcat 8),并可能将远程调试器连接到它以便执行代码?对于Eclipse Kepler + Tomcat 8,这是否有效?在我尝试该路径的30分钟内,IntelliJ IDEA 12不能做到这一点。

如果您想知道为什么我要这样做,我正在玩Spring 4.0.0.M1和4.0.0.M2 WebSocket内容。根据Rossen Stoyanchev的Spring 4.0 博客文章和示例,它们使用JSR-356,该规范在Tomcat 8中实现,理论上会在某个时候被反向移植到Tomcat 7中。

回答“如何轻松获得Spring 4 WebSocket支持的开发环境?”这个更广泛问题的答案很好,但了解如何将不受支持的Web服务器插入Eclipse仍然是不错的。

干杯,
E

**更新于8/7/13-Rossen Stoyanchev更新了Spring 4.0.0.M2 博客并增加了一些jpda智慧,并分享了他正在使用远程调试:

话说,使用Eclipse在Tomcat 8中进行调试并不难。只需更改bin/startup.sh中的最后一行即可(注意添加“jpda”)

 exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"
在Eclipse中创建一个远程调试配置,针对本地主机端口80,在启动Tomcat后启动它,然后您可以在源代码中设置断点。感谢Rossen!更新9/29/13 - Eclipse Kepler SR1已经到来,但遗憾的是!没有Tomcat 8的WTP支持。 Tomcat 8已升级到RC3。更新12/5/13:博客网址修复。Tomcat 8已升级至RC5。 单击此处 跟踪Eclipse中的WTP修复以支持Tomcat 8。 IntelliJ IDEA新版本13表示它现在支持Tomcat 8。个人尚未尝试。

检查一下,这对我来说完美无缺,没有任何问题! - huao
11个回答

59
更新:Eclipse Mars EE和更高版本已经原生支持Tomcat8,只有在使用早期版本的Eclipse时才需要使用以下方法。

Eclipse最新版本仍未支持Tomcat 8,但是您可以添加新版本的WTP,从而使Tomcat 8支持被添加到Eclipse中。操作步骤如下:

  • 下载Java EE的最新版本。
  • 进入WTP下载页面,选择最新版本(目前为3.6),并下载zip文件(位于“Traditional Zip Files...Web App Developers”下)。这里是当前链接
  • 将所下载WTP的features和plugins目录下的所有文件复制到对应的Eclipse文件夹中(覆盖现有文件)。

启动Eclipse,当您进行部署时,应该可以看到一个Tomcat 8选项。 enter image description here


那么你打开窗口,Tomcat8不在那里? - Jason
在我添加了Apache Tomcat v8运行环境之后,我发现它无法自动将其库导入到Eclipse中,例如servlet-api.jar,你有什么想法吗? - atom2ueki
你必须单独包含服务器运行时,但我相信这一直是这样的情况。 - Jason
对我来说有效,除了我需要修复我的Java构建路径,因为Java构建路径上找不到超类“javax.servlet.http.HttpServlet”。 - Mushy
你尝试使用以下命令启动Eclipse了吗:eclipse --clean - davorp
你需要 Eclipse IDE for Java EE Developers 版本 Kepler。 - user2601995

14

我按照Jason的步骤操作了,但是没有成功。

后来我发现了WTP更新网站:http://download.eclipse.org/webtools/updates/

帮助 -> 安装新软件 -> 添加 > WTP:http://download.eclipse.org/webtools/updates/ -> 确定

然后再进行帮助 -> 检查更新,就可以了,我不知道这是否影响了Jason的操作。


1
感谢您的回答。提供的解决方案有效。对于Eclipse Kepler,应使用另一个URL:http://download.eclipse.org/releases/kepler/,然后安装Web,XML,Java EE和OSGi企业开发 - 030
@wener,它显示错误“无法找到http://download.eclipse.org/webtools/updates”。 - Sagar
按照这些步骤操作,但在检查更新时没有显示任何软件。如果您首先按照Jason的步骤操作,则会显示一些要安装的内容,但我甚至不需要做其他任何事情就能让Tomcat 8出现。 - FearlessHyena
@wener 你使用的是哪个版本的 Eclipse,Luna 吗? - Christophe Roussy
不,Luna发布于2014年6月25日,但我的发布日期是2014年4月21日。 - wener

13

Eclipse 插件检查的唯一内容是 Tomcat 版本:

catalina.jar!/org/apache/catalina/util/ServerInfo.properties

我用Tomcat7中的属性文件替换了原来的文件,这解决了Eclipse中的问题。

为了能够部署spring-websockets示例应用程序,您需要在Eclipse中编辑以下文件:

.settings/org.eclipse.wst.common.project.facet.core.xml

将网络版本更改为2.5

<installed facet="jst.web" version="2.5"/>

2
我已经获得了最新的Tomcat 8.0.0 RC1版本,将其catalina.jar中的ServerInfo.properties替换为7.0.42版本。但是当我尝试在Eclipse中添加Tomcat 7服务器时,仍然出现“指定了未知版本的Tomcat”错误,无法继续。我还尝试将ServerInfo.class替换为7.0.42版本,因为其中也有一个版本号,但没有成功。 - ECDragon
肯定是Eclipse在Tomcat中检查catalina.jar以验证版本。比较7.0.42和8.0.0.RC1的catalina.jars后,发现有重大变化。 - ECDragon
1
在深入研究Eclipse源代码后,我发现TomcatVersionHelper->checkCatalinaVersion()确实会打开server/lib/catalina.jar并检查org/apache/catalina/util/ServerInfo.properties中的server.info属性。它将第一个“/”后面的数字作为版本号。 - ECDragon
我在Eclipse源代码中发现的另一件事是,它根据文件上次更新时间缓存这些信息。这可能是我的问题所在。或者可能是我没有正确地重新打包jar。无论哪种方式,我使用您的hack并将7.0.42 ServerInfo.properties替换为8.0.0-RC1 catalina.jar,使其工作。如果您不想手动设置Tomcat并进行远程调试,这回答了我的最初问题。 - ECDragon
1
以下是我在Mac上执行的步骤总结:1)对于7.0.42和8.0.0-RC1版本,将catalina.jar重命名为catalina.zip。2)解压catalina.zip文件(在mac上双击)。3)将org/apache/catalina/util/ServerInfo.properties的8.0版本替换为7.0版本。4)将修改后的8.0 catalina目录打包成jar文件。我在展开的catalina目录中使用了此命令:“jar cmf META-INF/MANIFEST.MF catalina.jar *”。 - ECDragon
显示剩余3条评论

7

这应该是在被接受的答案下评论,但我还没有50个声望。

http://download.eclipse.org/webtools/downloads/

我首先选择了发布的3.5.2版本,但像其他人一样对我没用。 然后我选择了集成的3.6.0版本,并在动态Web项目的新项目中看到了Tomcat 8。


6

我尝试了下面的方法,对我有效。

  1. 在eclipse中进入Help-> Eclipse Marketplace
  2. 在搜索框中输入JST扩展。
  3. 安装Luna版本的JSP适配器。
  4. 重启eclipse。
  5. 添加新服务器时,您应该能够看到Tomcat 8服务器。

我在Eclipse Kepler中执行了这些步骤。 - manali

2
除了@Jason的答案外,我还需要做更多的工作才能使我的应用程序运行。
  • 下载并解压缩 Eclipse IDE for Java EE Developers(注意EE版本)
  • 下载并解压缩Eclipse的Web Tools Platform Stable (Milestone) 3.6+
  • 使用WTP文件夹(features和plugins文件夹)覆盖Eclipse IDE中的两个文件夹
  • 下载并解压缩Tomcat 8
  • 在eclipse中选择新建 -> 其他 -> 服务器 -> Tomcat 8(选择解压缩的位置)
  • 如果出现404错误,请单击Servers视图中的Tomcat 8 -> Server Locations -> 更改为Use Tomcat installation,并将Deploy path: to webapps更改为*(如果您无法编辑此内容,请删除任何已发布的webapps

2

要将Tomcat 9.0(来自主干的Tomcat构建)作为Eclipse中的服务器添加。

请按照以下方式更新ServerInfo.properties文件属性。

server.info=Apache Tomcat/@VERSION@
server.number=@VERSION_NUMBER@
server.built=@VERSION_BUILT@


server.info=Apache Tomcat/7.0.57
server.number=7.0.57.0
server.built=Nov 3 2014 08:39:16 UTC

从代码库构建Tomcat服务器,并将该服务器作为Eclipse中的Tomcat7实例添加。

ServerInfo.properties文件位置:\tomcat\java\org\apache\catalina\util\ServerInfo.properties


0

0

只有Luna链接是有意义的,Kepler和更早版本没有提供WTP 3.6,这是解决Tomcat 8问题的关键。 - Christophe Roussy

0

如果您使用root用户将自己的Tomcat v8版本解压到自定义目录(Linux)中,则TOMCATROOT/lib目录上的默认权限不允许普通用户访问。

Eclipse将无法看到catalina.jar以检查版本。 因此,无论如何调整server.properties都无济于事!

只需添加chmod u+x lib/以允许普通用户访问libs即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接