这应该很容易,但这花费了我很多时间。我基本上无法在eclipse下运行RESTful Web服务。我确定我错过了一些愚蠢的东西,但资源似乎有点分散,没有任何内容涵盖最近的4.0 / EE 7版本。
我已经完全安装了Eclipse Kepler(4.3)。我尝试使用以下步骤设置基本的RESTful应用程序。
我安装了Java EE 7
我打开eclipse,将其指向一个新的工作区并创建一个新的“动态Web应用程序”。
项目名称并不特别重要,通过下载Glassfish扩展(New Runtime->下载其他服务器适配器 - > Glassfish)创建新的Target Runtime。这需要重新启动eclipse - 所以只需重复上一次,但在点击“New Runtime”后选择Glassfish 4.0运行时。 Web模块是3.1,其他一切都是默认的。我点击“完成”以创建我的新项目。
然后我右键单击并打开项目属性,然后单击“Project Facets”。我检查了JAX-RS(REST Web服务)。然后单击“需要进一步配置...”。然后从下拉列表中选择“禁用库配置”。字段将收到以下值:
JAX-RS servlet名称:JAX-RS Servlet
JAX-RS servlet类名:org.glassfish.jersey.servlet.ServletContainer
网址映射模式:/ jaxrs / *
然后我点击“确定”关闭所有窗口。
现在添加一个新的>'来自Pattern的RESTful Web服务'创建了一个新类,在部署时似乎没有被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 !堆栈0 java.lang.ClassCastException:org.eclipse.jst.javaee.web.internal.impl.WebAppImpl无法强制转换为org.eclipse.jst.j2ee.webapplication.WebApp 在org.eclipse.jst.ws.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) 在org.eclipse.wst.common.project.facet.core.internal.FacetedProject.mergeChangesInternal(FacetedProject.java:1181) 在org.eclipse.wst.common.project.facet.core.internal.FacetedProject.access $ 2(FacetedProject.java:1117) 在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.mergeChanges(FacetedProject.java:1109) 在org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.commitChanges(FacetedProjectWorkingCopy.java:2020) 在org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage $ 4.run(FacetsPropertyPage.java:232) 在org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) 在org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage $ 5.run(FacetsPropertyPage.java:246) at org.eclipse.jface.operation.ModalContext $ ModalContextThread.run(ModalContext.java:121)
任何见解都会非常感激。
答案 0 :(得分:0)
尝试使用Java SE运行Eclipse。您的项目需要编译的Java EE部分可以来自Glassfish本身。您可能还需要使用@Path而不是@path,因为它与类型名称匹配且区分大小写。