2011-04-28 62 views
0

我開發一個基於Jersey的應用程序並使用Grizzly來測試應用程序。只要我從Eclipse中運行它,一切運作良好!但是,當我執行導出到可運行Jar並在Windows 7命令提示符下執行時,我一直在獲取下面的錯誤消息:我的主要方法已列出,我錯過了什麼。 (感謝您的幫助)運行Jersey與灰熊作爲可執行jar文件不起作用

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);   
} 

的錯誤,我越來越:

重度:在ResourceConfig實例不包含任何根資源類。

2011年4月28日下午12時42分五十六秒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

我有完全相同的問題,並想知道如果您已經找到了除可手工創建可運行JAR之外的解決方案嗎? – 2011-06-17 22:06:26

回答

0

我有同樣的問題。 解決方案是手動添加資源文件。

更改您的兩個變量:

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」

如果您使用其他的罐子,請在啓動程序時將它們包含在您的類路徑中。只需要: java -cp ./DIR1;./DIR2;./DIR3 -jar myJAR.jar

相關問題