0

这应该很容易,但它已经花费了我大量的时间。我基本上无法在 Eclipse 下运行 RESTful Web 服务。我确定我错过了一些愚蠢的东西,但是资源似乎有点分散,并且没有任何内容涵盖最近的 4.0/EE 7 版本。

我有一个全新安装的 Eclipse Kepler (4.3)。我尝试使用以下步骤设置一个基本的 RESTful 应用程序。

我安装了 Java EE 7

我打开 Eclipse,将它指向一个新的工作区并创建一个新的“动态 Web 应用程序”。

项目名称并不特别重要,通过下载 Glassfish 扩展创建一个新的目标运行时(新运行时->下载附加服务器适配器->Glassfish)。这需要重新启动 eclipse - 所以只需重复前面的操作,但在单击“新运行时”后选择 Glassfish 4.0 运行时。Web Module 是 3.1,其他都是默认的。我点击“完成”来创建我的新项目。

然后我右键单击并打开项目属性,然后是“Project Facets”。我检查了 JAX-RS(REST Web 服务)。然后单击“需要进一步配置...”。然后我从下拉列表中选择“禁用库配置”。这些字段接收以下值:

JAX-RS servlet 名称:JAX-RS Servlet

JAX-RS servlet 类名:org.glassfish.jersey.servlet.ServletContainer

URL 映射模式:/jaxrs/*

然后我单击“确定”关闭所有窗口。

现在添加一个 New->'RESTful Web Service from Pattern' 会创建一个新类,glassfish 在部署时似乎永远不会选择它。我的理解是它应该自动扫描并使用@path 拾取东西。似乎没有。如果我足够解决问题,我似乎可以访问 application.wadl - 但没有显示我的资源。

如果我返回属性并查看我的 JAX-RS 项目方面,我会看到一个错误框,指出我的某些值无效。

在工作区日志中,我遇到了以下异常:

!ENTRY org.eclipse.jst.jee 4 0 2013-07-02 21:54:27.780 !MESSAGE org.eclipse.jst.javaee.web.internal.impl.WebAppImpl 不能转换为 org.eclipse.jst.j2ee。 webapplication.WebApp !STACK 0 java.lang.ClassCastException: org.eclipse.jst.javaee.web.internal.impl.WebAppImpl 无法在 org.eclipse.jst.ws 中转换为 org.eclipse.jst.j2ee.webapplication.WebApp .jaxrs.core.internal.project.facet.UpdateWebXMLForJ2EE.run(UpdateWebXMLForJ2EE.java:32) 在 org.eclipse.jst.jee.model.internal.JEE5ModelProvider.modify(JEE5ModelProvider.java:255) 在 org.eclipse.jst .jee.model.internal.Web25MergedModelProvider.modify(Web25MergedModelProvider.java:92) 在 org.eclipse.jst.ws.jaxrs.core.internal.project.facet.JAXRSFacetInstallDelegate.createServletAndModifyWebXML(JAXRSFacetInstallDelegate.java:275) 在 org.eclipse .jst.ws。jaxrs.core.internal.project.facet.JAXRSFacetInstallDelegate.execute(JAXRSFacetInstallDelegate.java:156) 在 org.eclipse.wst.common.project.facet.core.internal.FacetedProject.callDelegate(FacetedProject.java:1477) 在 org. eclipse.wst.common.project.facet.core.internal.FacetedProject.modifyInternal(FacetedProject.java:441) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.mergeChangesInternal(FacetedProject.java:1181 ) 在 org.eclipse.wst.common.project.facet.core.internal.FacetedProject$5.run (FacetedProject.java:1099) 在 org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) 在 org.eclipse.wst.common.project.facet.core.internal.FacetedProject。在 org.eclipse.wst.common.project.facet.ui 的 org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.commitChanges(FacetedProjectWorkingCopy.java:2020) 的 mergeChanges(FacetedProject.java:1109)。 internal.FacetsPropertyPage$4.run(FacetsPropertyPage.java:232) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) at org.eclipse.wst.common.project.facet.ui.internal .FacetsPropertyPage$5.run(FacetsPropertyPage.java:246) 在 org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)在 org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) 在 org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage 运行(FacetsPropertyPage.java:232)$5.run (FacetsPropertyPage.java:246) 在 org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)在 org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) 在 org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage 运行(FacetsPropertyPage.java:232)$5.run (FacetsPropertyPage.java:246) 在 org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

任何见解将不胜感激。

4

1 回答 1

0

尝试使用 Java SE 运行 Eclipse。您的项目需要编译的 Java EE 部分可以来自 Glassfish 本身。您可能还需要使用@Path 而不是@path,因为它与类型名称匹配并且区分大小写。

于 2013-07-02T22:50:03.957 回答