我开发基于Jersey的应用程序并使用Grizzly来测试应用程序。只要我从Eclipse运行它一切都很好!但是,当我导出到可运行的Jar并在Windows 7命令提示符下执行时,我一直收到以下错误消息:列出了我的主要方法,我错过了什么。 (感谢您的帮助)
private static final String PORT="8899";
private static final String MACHINE="http://localhost";
private static final String MAIN_PACKAGE="aklero.idea.persistence";
private static final String JERSEY_PACKAGE="com.sun.jersey.config.property.packages";
private static final String MACHINE_URI=MACHINE+":"+PORT+"/";
public static void main(String[] args) throws IOException
{
final String baseUri = MACHINE_URI;
final Map<String, String> initParams = new HashMap<String, String>();
initParams.put(JERSEY_PACKAGE, MAIN_PACKAGE);
System.out.println("Starting grizzly...");
SelectorThread threadSelector = GrizzlyWebContainerFactory.create(baseUri, initParams);
System.in.read();
threadSelector.stopEndpoint();
System.exit(0);
}
我得到的错误:
SEVERE:ResourceConfig实例不包含任何根资源类。
2011年4月28日下午12:42:56 com.sun.grizzly.http.servlet.ServletAdapter doService
严重:服务异常:
com.sun.jersey.api.container.ContainerException:ResourceConfig实例不
包含任何根资源类。
at com.sun.jersey.server.impl.application.RootResourceUriRules。
(RootResourceUriRules.java:103)
答案 0 :(得分:0)
显然,这可以通过Eclipse的导出选项来实现。
http://jersey.576304.n2.nabble.com/Cant-get-Jersey-running-in-embedded-Grizzly-td2915843.html
答案 1 :(得分:0)
我遇到了同样的问题。 解决方案是手动添加资源文件。
更改您的2个变量:
private static final String MAIN_PACKAGE = "yourpackage2.MyApplication";
private static final String JERSEY_PACKAGE = "javax.ws.rs.Application";
并创建此文件:
package yourpackage2;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
public class MyApplication extends Application {
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(yourpackage1.ResourceClass1.class);
//s.add(...); and so on
return s;
}
}
在eclipse中创建jar时,激活单选按钮“将所需库打包为生成的JAR”
如果您使用其他jar,请在启动程序时将它们包含在类路径中。只需:
java -cp ./DIR1;./DIR2;./DIR3 -jar myJAR.jar