2011-12-13 125 views
0

我有一個類,我認爲有一些依賴問題引用外部庫文件。每次我嘗試在服務器上運行此操作時,都會收到錯誤,指出找不到類。例如:Java類未找到錯誤

SEVERE: Class [ org/json/JSONException ] not found. Error while loading [ class com.myproj.logic.Driver ]

這是阻止類執行。我試着拿出具體的只是說「拋出異常」,並得到了以下錯誤拋出execption:

WARNING: A system exception occurred during an invocation on EJB Driver method public void com..logic.Driver.initURL() throws java.lang.Exception javax.ejb.EJBException: javax.ejb.CreateException: Initialization failed for Singleton Driver

Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils

@Singleton 
public class Driver { 

@EJB RSSbean rssbean;  

@PostConstruct 
@Schedule(hour ="*/1", minute ="*/1", second ="*/1", persistent = false) 
public void initURL() throws IOException, JSONException{ 

    URL twitterSource = new URL("http://search.twitter.com/search.json?q=news"); 
    ByteArrayOutputStream urlOutputStream = new ByteArrayOutputStream(); 

       IOUtils.copy(twitterSource.openStream(), urlOutputStream); 
       String urlContents = urlOutputStream.toString(); 
       JSONObject thisobject = new JSONObject(urlContents); 
       JSONArray names = thisobject.names(); 
       JSONArray asArray = thisobject.toJSONArray(names); 
       JSONArray resultsArray = thisobject.getJSONArray("results"); 

      JSONObject jsonObject = resultsArray.getJSONObject(0); 

      String twitterText = jsonObject.getString("text"); 

      //System.out.println(twitterText); 
      System.out.println("Calling rssbean from Driver"); 
      rssbean.updateDatabase("twitterText"); 

} 
} 

我已經編輯Java類路徑,並添加對於這些用戶庫以及編輯項目的構建路徑。這些庫顯示在列表中,我沒有收到編譯器錯誤,所以至少Eclipse已經認識到這些庫。執行期間出現問題,所以我認爲那裏有問題。

我應該在Windows> Preferences> Java> Classpath>中編輯類路徑,並在其中添加Jars嗎?我以前不必爲其他圖書館做這件事。

+0

編譯和執行類的方法不同。你如何啓動應用程序?在運行時類路徑中列出了丟失的庫文件嗎? – 2011-12-13 17:39:29

+0

我在glassfish 3.1中運行它。我認爲我的構建路徑很好,它必須是類路徑。我如何檢查這個以確保它們在那裏?如果我轉到Windows>首選項> Java>構建路徑>類路徑>那裏只有JRE庫文件。 – Randnum 2011-12-13 17:46:55

回答

0

我發現你必須在Glassfish/domain/lib目錄中添加任何庫文件,然後才能被服務器上的glassfish識別。