gpt4 book ai didi

java - 为什么 Jersey 在我创建自己的 Packages ResourceConfig 时说 "Array of packages must not be null or empty"?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:28:01 26 4
gpt4 key购买 nike

我创建了自己的 PackagesResourceConfig,如下所示:

import com.sun.jersey.api.core.PackagesResourceConfig;

import javax.ws.rs.core.MediaType;
import java.util.HashMap;
import java.util.Map;

public class ResourceConfigClass extends PackagesResourceConfig {
@Override
public Map<String, MediaType> getMediaTypeMappings() {
Map<String, MediaType> map = new HashMap<String, MediaType>();
map.put("xml", MediaType.APPLICATION_XML_TYPE);
map.put("json", MediaType.APPLICATION_JSON_TYPE);
return map;
}
}

但是现在当我启动我的应用程序时,它会给我一个错误:

Array of packages must not be null or empty

来自 Jersey 的源代码:

/**
* Search for root resource classes declaring the packages as an
* array of package names.
*
* @param packages the array package names.
*/
public PackagesResourceConfig(String... packages) {
if (packages == null || packages.length == 0)
throw new IllegalArgumentException("Array of packages must not be null or empty");

init(packages.clone());
}

但我已经通过设置 com.sun.jersey.config.property.packages 参数在我的 web.xml 中设置了包,所以它不应该为空。

最佳答案

这实际上是一个 Java 问题。与带参数的普通构造函数不同,如果构造函数只有可变参数,则什么都不传入是有效的。因此,您不必像使用 StringInteger 或任何非可变参数那样重写构造函数.将我的类(class)更改为此解决了问题:

import com.sun.jersey.api.core.PackagesResourceConfig;

import javax.ws.rs.core.MediaType;
import java.util.HashMap;
import java.util.Map;

public class ResourceConfigClass extends PackagesResourceConfig {
public ResourceConfigClass(String... packages) { //this constructor needs to be here, do not delete it or else the com.sun.jersey.config.property.packages param can't be passed in.
super(packages);
}

public ResourceConfigClass(Map<String, Object> props) { //this constructor needs to be here, do not delete it or else the com.sun.jersey.config.property.packages param can't be passed in.
super(props);
}

@Override
public Map<String, MediaType> getMediaTypeMappings() {
Map<String, MediaType> map = new HashMap<String, MediaType>();
map.put("xml", MediaType.APPLICATION_XML_TYPE);
map.put("json", MediaType.APPLICATION_JSON_TYPE);
return map;
}
}

关于java - 为什么 Jersey 在我创建自己的 Packages ResourceConfig 时说 "Array of packages must not be null or empty"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18883069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com