Я получаю java.lang.ClassNotFoundException: com.example.pricing.shared.MyClass
, и я не понимаю, почему, учитывая, что класс находится в пути к классам.Проблема с загрузкой класса Class Session Session в общедоступной библиотеке
Вот конфиг я использую: У меня есть 2 военные файлы в том же экземпляре Tomcat 7:
ROOT.war
указывающие на www.example.com/app.war
указывая на www.example .com/приложение/*
Оба файла содержат 2 разделяемые библиотеки:
commons.jar
pricing.jar
commons.jar
Lib содержит SessionDAO
класс, который расширяет Сиро AbstractSessionDAO
. Мой класс SessionDAO представляет собой базовую реализацию, которая сохраняет сеанс Shiro в таблице MySQL (объект VARCHAR id, объект объекта BLOB).
Теперь, когда я пытаюсь получить доступ к URL из app.war
модуля я получаю следующее исключение при десериализацией сессии из БД:
org.apache.shiro.session.SessionException: Class not found exception while reading Session from input stream!
com.example.dao.SessionDAO.deserialize(SessionDAO.java:97)
... (omitted)
Root cause:
java.lang.ClassNotFoundException: com.example.pricing.shared.MyClass
java.net.URLClassLoader$1.run(URLClassLoader.java:366)
Метод неисправна Deserialize выглядит следующим образом:
private static Session deserialize(ResultSet resultSet, String col){
ByteArrayInputStream bais=null;
ObjectInputStream ins=null;
Session res=null;
try{
byte[] barray=resultSet.getBytes(col);
if(barray!=null){
bais=new ByteArrayInputStream(barray);
ins=new ObjectInputStream(bais);
res=(Session)ins.readObject();
}
}catch(IOException e){
throw new SessionException("IO exception while reading Session from input stream!",e);
}catch(ClassNotFoundException e){
throw new SessionException("Class not found exception while reading Session from input stream!",e);//the one causing the issue
}catch(SQLException e){
throw new SessionException("SQL exception while reading Session from input stream!",e);
}finally{
try{
ins.close();
}catch(NullPointerException|IOException e){}
try{
bais.close();
}catch(NullPointerException|IOException e){}
}
return res;
}
У вас есть идеи по устранению этой проблемы?