0

我正在根据Amdatu指南编写一个 REST 服务,它非常简单,但它给我一个错误我已经添加了所有依赖项但仍然缺少需求错误

这是一条错误消息

! could not resolve the bundles
! Failed to start bundle org.apache.felix.http.whiteboard-2.3.0, exception Unresolved constraint in bundle org.apache.felix.http.whiteboard [13]: Unable to resolve 13.0: missing requirement [13.0] osgi.wiring.package; (&(osgi.wiring.package=javax.servlet)(version>=3.0.0)(!(version>=4.0.0)))
! Failed to start bundle org.amdatu.web.rest.wink-1.0.8, exception Unresolved constraint in bundle org.amdatu.web.rest.wink [14]: Unable to resolve 14.0: missing requirement [14.0] osgi.wiring.package; (&(osgi.wiring.package=org.codehaus.jackson.jaxrs)(version>=1.9.0)(!(version>=2.0.0)))
! Failed to start bundle org.apache.felix.http.jetty-2.3.0, exception Unresolved constraint in bundle org.apache.felix.http.jetty [15]: Unable to resolve 15.0: missing requirement [15.0] osgi.wiring.package; (&(osgi.wiring.package=javax.servlet)(version>=3.0.0)(!(version>=4.0.0)))
____________________________
Welcome to Apache Felix Gogo

g! 

这是实现

package web.rest;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("hellorest")
public class HelloWorldResource {
    @GET
    @Produces(MediaType.TEXT_HTML)
    public String say_hello() {
        return "hello";
    }

}

这是一个激活器类

package web.rest;

import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.BundleContext;

public class Activator extends DependencyActivatorBase{

    @Override
    public void destroy(BundleContext arg0, DependencyManager arg1)
            throws Exception {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void init(BundleContext arg0, DependencyManager manager)
            throws Exception {
        manager.add(createComponent()
                .setInterface(Object.class.getName(),null)
                .setImplementation(HelloWorldResource.class));
    }

}

我已经添加了这些来构建依赖项 在此处输入图像描述

这些是运行依赖项 在此处输入图像描述

如果您要求我将 Servlet 包更改为 3.0,我会回答一些其他服务要求Servlet版本必须小于 3.0 现在我无法同时满足它们。

4

1 回答 1

4

问题出在您的“运行捆绑包”配置中:

  1. 用org.apache.felix.http.servlet-api替换javax.servlet包。它包含适当版本​​的 javax.servlet 包。
  2. 也添加jackson-jaxrs

这两个包也可以在“Amdatu Dependencies”存储库中找到。

于 2014-08-12T19:45:56.540 回答