Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAX-RS与协议缓冲区教程应用程序_Java_Rest_Jersey_Protocol Buffers_Grizzly - Fatal编程技术网

Java JAX-RS与协议缓冲区教程应用程序

Java JAX-RS与协议缓冲区教程应用程序,java,rest,jersey,protocol-buffers,grizzly,Java,Rest,Jersey,Protocol Buffers,Grizzly,我正在研究REST和协议缓冲区。 因此,我找到了创建示例应用程序的[本][1]教程 不幸的是,要导入的库有问题,我无法解决: 在这方面: return GrizzlyServerFactory.create(uri, initParams); 我收到一个语法错误: The method create(URI, ResourceConfig) in the type GrizzlyServerFactory is not applicable for the arguments (URI, Ma

我正在研究REST和协议缓冲区。 因此,我找到了创建示例应用程序的[本][1]教程

不幸的是,要导入的库有问题,我无法解决:

在这方面:

return GrizzlyServerFactory.create(uri, initParams);
我收到一个语法错误:

The method create(URI, ResourceConfig) in the type
GrizzlyServerFactory is not applicable for the arguments (URI,
Map<String,String>)
作为参考,我将全班粘贴在这里:

package com.sampullara.jaxrsprotobuf.tutorial;

import java.io.IOException;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;

import javax.ws.rs.core.UriBuilder;

import com.sun.grizzly.http.SelectorThread;
import com.sun.jersey.api.container.grizzly.GrizzlyServerFactory;
import com.sun.jersey.api.core.ResourceConfig;

public class Main {
    public static final URI BASE_URI = UriBuilder.fromUri("http://localhost/").port(9998).build();

    public static void main(String[] args) throws IOException {
        System.out.println("Starting grizzly...");
        URI uri = BASE_URI;
        SelectorThread threadSelector = createServer(uri);
        System.out.println(String.format("Try out %sperson\nHit enter to stop it...", uri));
        System.in.read();
        threadSelector.stopEndpoint();
    }

    public static SelectorThread createServer(URI uri) throws IOException {
        Map<String, String> initParams = new HashMap<String, String>();
        initParams.put("com.sun.jersey.config.property.packages", "com.sampullara");

        // error happens in next line - constructor doesnt exist with the given parameters
        return GrizzlyServerFactory.create(uri, initParams);
    }
}
package com.sampullara.jaxrsprotobuf.tutorial;
导入java.io.IOException;
导入java.net.URI;
导入java.util.HashMap;
导入java.util.Map;
导入javax.ws.rs.core.UriBuilder;
导入com.sun.grizzly.http.SelectorThread;
进口com.sun.jersey.api.container.grizzly.grizzlyserver工厂;
导入com.sun.jersey.api.core.ResourceConfig;
公共班机{
公共静态最终URI BASE_URI=UriBuilder.fromUri(“http://localhost/)端口(9998.build();
公共静态void main(字符串[]args)引发IOException{
System.out.println(“启动灰熊…”);
URI=基本URI;
SelectorRead threadSelector=createServer(uri);
System.out.println(String.format(“尝试%sperson\n输入以停止…”,uri));
System.in.read();
threadSelector.stopEndpoint();
}
公共静态选择器读取createServer(URI)引发IOException{
Map initParams=new HashMap();
initParams.put(“com.sun.jersey.config.property.packages”、“com.sampullara”);
//错误发生在下一行-给定参数的构造函数不存在
返回GrizzlyServerFactory.create(uri,initParams);
}
}
编辑1:

我修改了代码,但仍然无法运行:

public static SelectorThread createServer(URI uri) throws IOException {
    //Map<String, String> initParams = new HashMap<String, String>();
    //initParams.put("com.sun.jersey.config.property.packages", "com.sampullara");
    // original code: return GrizzlyServerFactory.create(uri, initParams);

    DefaultResourceConfig rscfg = new DefaultResourceConfig();
    return GrizzlyServerFactory.create( uri , rscfg );
}
public static SelectorThread createServer(URI)抛出IOException{
//Map initParams=new HashMap();
//initParams.put(“com.sun.jersey.config.property.packages”、“com.sampullara”);
//原始代码:返回GrizzlyServerFactory.create(uri,initParams);
DefaultResourceConfig rscfg=新建DefaultResourceConfig();
返回GrizzlyServerFactory.create(uri,rscfg);
}
Eclipse向我抛出以下运行时错误:

SCHWERWIEGEND:ResourceConfig实例不包含任何根目录 资源类。线程“main”中出现异常 com.sun.jersey.api.container.ContainerException:资源配置 实例不包含任何根资源类。在 com.sun.jersey.server.impl.application.RootResourceUriRules.(RootResourceUriRules.java:99) 在 com.sun.jersey.server.impl.application.WebApplicationImpl.\u initiate(WebApplicationImpl.java:1300) 在 com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:163) 在 com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:769) 在 com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:765) 在 com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) 在 com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765) 在 com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java:172) 在 com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java:134) 在 com.sun.jersey.api.container.grizzly.GrizzlyServerFactory.create(GrizzlyServerFactory.java:151) 在 com.sampullar.jaxrsprotobuf.tutorial.Main.createServer(Main.java:34) 位于com.sampullar.jaxrsprotobuf.tutorial.Main.Main(Main.java:21)

采用两个参数:

  • java.net.URI
  • 使用
    Map
    作为第二个参数是错误的


    有关
    GrizzlyServerFactory的另一个问题,请参阅

    谢谢您的提醒!->完成!谢谢你的回答。我已经看到,所使用的构造函数是无效的,但不幸的是,我不知道如何修改代码以使其工作(参见第一篇文章)
    public static SelectorThread createServer(URI uri) throws IOException {
        //Map<String, String> initParams = new HashMap<String, String>();
        //initParams.put("com.sun.jersey.config.property.packages", "com.sampullara");
        // original code: return GrizzlyServerFactory.create(uri, initParams);
    
        DefaultResourceConfig rscfg = new DefaultResourceConfig();
        return GrizzlyServerFactory.create( uri , rscfg );
    }