Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Spring не видит пакеты из "соседнего" bundle (PDE) 
:(
    Опции темы
ming
Дата 9.2.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 30.1.2009
Где: Новосибирск

Репутация: нет
Всего: 3



Приветствую!

Разрабатываю два плагина (bundle, в рамках eclipse PDE) - backend & frontend. Бэкэнд содержит логику манипуляции БД с помощью openJPA, а фронтэнд реализует RAP-приложение, но проблема заключается в другом, поэтому примеры будут упрощены насколько это возможно.

Для примера в бэкэнде пусть лежит класс A:
Код

package backend;

public class A {    
    public A() {
        System.out.println(this.getClass().getCanonicalName() + " instantiated");
    }
}


инстанцируем класс A через Spring / applicationContext.xml :
Код

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">        
    
    <bean id="dummy" 
        class="backend.A"
        scope="singleton">
    </bean>
     
</beans>


затем во фронтэнде:
Код

package rap_frontend;

import org.eclipse.rwt.lifecycle.IEntryPoint;
/* остальной импорт */
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import backend.A;

/** RAP application */
public class Application implements IEntryPoint {

    public int createUI() {        
        A obj = new A(); // << 1
        System.out.println(obj.getClass().getCanonicalName());
                
        // init Manager object via Spring
        try {
            ApplicationContext context =            
                new FileSystemXmlApplicationContext(new String[] {
                    "D:/ming/workspaces/rap2-echo-training-2/rap-frontend/src/rap_frontend/applicationContext.xml"
                });                

            Object i = context.getBean("dummy"); // << 2
            System.out.println(i.getClass());
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        
        System.out.println("loaded!");
        
        Display display = PlatformUI.createDisplay();
        WorkbenchAdvisor advisor = new ApplicationWorkbenchAdvisor();
        return PlatformUI.createAndRunWorkbench( display, advisor );
    }

    /* skipped */
}


В чём заключается проблема... Spring не видит класс A, несмотря на то что компилятор видит (комментарий №1)
в точке, где стоит комментарий №2, выбрасывается такое исключение (trace):
Код

osgi> Feb 9, 2009 5:51:31 PM org.mortbay.http.HttpServer doStart
INFO: Version Jetty/5.1.x
Feb 9, 2009 5:51:31 PM org.mortbay.util.Container start
INFO: Started org.eclipse.equinox.http.jetty.internal.Servlet25Handler@1deeb40
Feb 9, 2009 5:51:31 PM org.mortbay.util.Container start
INFO: Started HttpContext[/,/]
Feb 9, 2009 5:51:31 PM org.mortbay.http.SocketListener start
INFO: Started SocketListener on 0.0.0.0:1607
Feb 9, 2009 5:51:31 PM org.mortbay.util.Container start
INFO: Started org.mortbay.http.HttpServer@4a6cbf
backend.A instantiated
backend.A
Feb 9, 2009 5:51:34 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.FileSystemXmlApplicationContext@17e845a: display name [org.springframework.context.support.FileSystemXmlApplicationContext@17e845a]; startup date [Mon Feb 09 17:51:34 NOVT 2009]; root of context hierarchy
Feb 9, 2009 5:51:34 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from file [D:\ming\workspaces\rap2-echo-training-2\rap-frontend\src\rap_frontend\applicationContext.xml]
Feb 9, 2009 5:51:34 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.context.support.FileSystemXmlApplicationContext@17e845a]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1014e21
Feb 9, 2009 5:51:34 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1014e21: defining beans [dummy]; root of factory hierarchy
Feb 9, 2009 5:51:34 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1014e21: defining beans [dummy]; root of factory hierarchy
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [backend.A] for bean with name 'dummy' defined in file [D:\ming\workspaces\rap2-echo-training-2\rap-frontend\src\rap_frontend\applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: backend.A
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1141)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:524)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1177)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:758)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:422)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)
    at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:94)
    at rap_frontend.Application.createUI(Application.java:35)
    at org.eclipse.rwt.internal.lifecycle.EntryPointManager.createUI(EntryPointManager.java:92)
    at org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:228)
    at org.eclipse.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:116)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: backend.A
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.core.runtime.internal.adaptor.ContextFinder.loadClass(ContextFinder.java:129)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:211)
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:385)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1138)
    ... 13 more
loaded!
!SESSION 2009-02-09 17:51:30.345 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0_07
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
Command-line arguments:  -dev file:D:/ming/workspaces/rap2-echo-training-2/.metadata/.plugins/org.eclipse.pde.core/rap-frontend/dev.properties -os win32 -ws win32 -arch x86 -console -consolelog


Импорт/Экспорт:

backend / MANIFEST.MF
Код

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Backend Plug-in
Bundle-SymbolicName: backend;singleton:=true
Bundle-Version: 1.0.0
Bundle-ClassPath: .,
 bin/
Export-Package: backend
Bundle-ActivationPolicy: lazy


frontend / MANIFEST.MF
Код

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Rap_frontend Plug-in
Bundle-SymbolicName: rap_frontend; singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: rap_frontend.Activator
Require-Bundle: org.eclipse.rap.ui,
 backend;bundle-version="1.0.0",
 libs;bundle-version="1.0.0" // << из этого "общего" плагина libs берётся сам Spring и другие необходимые пакеты
Bundle-ActivationPolicy: lazy
Import-Package: backend
Bundle-ClassPath: bin/,
 .


На Spring смотрю как кот на сметану, но пока пристально не разбирался и никак не могу осмыслить в чём проблема  smile 
Подмогите пожалуйста  smile 

Это сообщение отредактировал(а) ming - 9.2.2009, 15:01
PM MAIL ICQ Jabber   Вверх
lemonade
Дата 9.2.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 7.12.2006
Где: Беларусь, Минск

Репутация: 2
Всего: 2



Чем ты все билдишь и запускаешь? Не шарю  эклипсе, но проблема выглядит так будто у тебя файл контекста захардкожено берется из сырков а не из сбилженого модуля с пакетами с *.class файлами.  
Т.е. если положить в класспас тот же файл и поднять его все бут работать.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0708 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.