2011-12-13 2 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> Предпочтения> Java> Путь к классам> и добавить там Jars? Раньше мне не приходилось делать это для других библиотек.

+0

Компиляция и исполнение classpathes разные. Как запустить приложение? Является ли отсутствующий librairy указанным в пути пути к runtime? –

+0

Я бегу в стеклянную рыбку 3.1. Я думаю, что мои пути сборки в порядке, это должен быть путь к классам. Как я могу проверить это, чтобы убедиться, что они там? Если я перейду в windows> preferences> Java> build path> class path>, там будут только файлы библиотеки JRE. – Randnum

+1

Я думаю, вы должны добавить банку, которая содержит отсутствующий класс com.myproj.logic.Driver, в ваш каталог Webapp WEB-INF/lib, чтобы его можно было использовать (и находить) во время выполнения. Или, если это не jar, а один класс, добавьте его в каталог WEB-INF/classes. В обоих случаях повторно разверните приложение и протестируйте его с добавлением новой банки или класса. –

ответ

0

Я узнал, что вы должны добавить файлы библиотеки в каталог Glassfish/domain/lib, прежде чем они будут распознаны Glassfish на сервере.

+0

Ненависть отвечать на мой вопрос, но это не подтягивало меня на основе ключевых слов, которые я использовал. – Randnum

+0

Или, как в моем случае/WEB-INF/lib/требуется jettison.jar – tricknology

Смежные вопросы