以Grizzly作为可执行jar文件运行Jersey不起作用
我正在开发一个基于Jersey的应用程序,并使用Grizzly测试该应用程序。只要我从Eclipse运行它,一切都很好!然而,当我导出到一个可运行的Jar并在Windows7命令提示符下执行时,我始终会收到下面的错误消息:我的主方法已列出,我缺少了什么。(谢谢你的帮助)以Grizzly作为可执行jar文件运行Jersey不起作用,jersey,grizzly,Jersey,Grizzly,我正在开发一个基于Jersey的应用程序,并使用Grizzly测试该应用程序。只要我从Eclipse运行它,一切都很好!然而,当我导出到一个可运行的Jar并在Windows7命令提示符下执行时,我始终会收到下面的错误消息:我的主方法已列出,我缺少了什么。(谢谢你的帮助) private static final String PORT=“8899”; 专用静态最终字符串计算机=”http://localhost"; 私有静态最终字符串MAIN_PACKAGE=“aklero.idea.persi
private static final String PORT=“8899”;
专用静态最终字符串计算机=”http://localhost";
私有静态最终字符串MAIN_PACKAGE=“aklero.idea.persistence”;
私有静态最终字符串JERSEY\u PACKAGE=“com.sun.JERSEY.config.property.packages”;
私有静态最终字符串MACHINE_URI=MACHINE+“:“+PORT+”/”;
公共静态void main(字符串[]args)引发IOException
{
最后一个字符串baseUri=机器\ URI;
final Map initParams=new HashMap();
initParams.put(JERSEY_包,主_包);
System.out.println(“启动灰熊…”);
SelectorRead threadSelector=GrizzlyWebContainerFactory.create(baseUri,initParams);
System.in.read();
threadSelector.stopEndpoint();
系统出口(0);
}
我得到的错误是:
严重:ResourceConfig实例不包含任何根资源类
2011年4月28日下午12:42:56 com.sun.grizzly.http.servlet.ServletAdapter doService
严重:服务异常:
com.sun.jersey.api.container.ContainerException:ResourceConfig实例没有
包含任何根资源类
请访问com.sun.jersey.server.impl.application.RootResourceUriRules
(RootResourceUriRules.java:103)显然这与Eclipse的导出选项有关 我也有同样的问题。 解决方案是手动添加资源文件 更改两个变量:
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;
}
}
打包你的包2;
导入java.util.HashSet;
导入java.util.Set;
导入javax.ws.rs.core.Application;
公共类MyApplication扩展了应用程序{
public Set>s=new HashSetI也有同样的问题,除了手动创建runnable JAR之外,您是否已经找到了解决方案?
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;
}
}