RCP (Rich Client Platform) e Hibernate

Fala Galera!!

Estou com um problema aqui no mínimo estranho.
Eu tenho aqui uma classe que tem uns métodos que fazem a persistência no banco de dados, através do hibernate.

Acontece q eu comecei a usar agora o RCP (Rich Client Platform) e qdo eu passei essa classe para ser instanciada a partir de uma View do RCP, ela começou a dar pau.

Ela funciona pois eu tenho no mesmo projeto uma tela em Swing q a usa numa boa, mas na minha View, só de eu tentar instancia um objeto desse (HibernateConf hbm = new HibernateConf) dá pau…

Alguém sabe o que pode ser??

Abaixo o código da minha classe.

package teste

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class HibernateConf {
	
	//Atributos
	private SessionFactory sf;
	private Session session;
	private Transaction tx;
	//Fim atributos	
	
	
	//Métodos
		
	/**
	 * Método responsável por criar a Session
	 * PS: Esse método deve ser chamado apenas uma vez na aplicação
	 */
	public void createSession() {
		
		try{
		
		//SessionFactory deve ser criado uma única vez durante a execução
		//da aplicação
		sf = new  Configuration()
		.configure("c:/hibernate.cfg.xml")
		.buildSessionFactory();
		
		}catch(HibernateException e1){
			   e1.printStackTrace();
			   System.out.println("Erro ao criar Session do Hibernate.");
		}
						
	}
	
	/**
	 * Método  responsável por gravar um objeto no banco
	 * @param  Object o: Objeto a ser persistido
	 * @param  int op..: 0 - Inserir
	 * 					 1 - Alterar
	 * @return boolean:  True  - Sucesso
	 *                   False - Falha
	 */	
	public boolean postObj(Object o, int op) {
		
		boolean ret = true;
		
		try {
		
			//Abre sessão
			session = sf.openSession();
		
			//Cria transação
			tx = session.beginTransaction();
		
			//Realiza persistência
			if (op == 0) { 
				session.save(o);
			} else {			
				session.update(o);
			}
		
			//Fecha transação
			tx.commit();
		
			//Fecha sessão
			session.close();
			
		}catch(HibernateException e1){
			   e1.printStackTrace();
			   System.out.println("Erro ao gravar objeto no banco de dados - Erro no processo do Hibernate");
			   
			   ret = false;
		}catch(Exception eGeneric){
			   eGeneric.printStackTrace();
			   System.out.println("Erro ao gravar objeto no banco de dados - Erro geral");
			   
			   ret = false;
		}
		
		return ret;
		
	}
	
	/**
	 * Método  responsável por excluir um objeto no banco
	 * @param  
	 * @return boolean:  True  - Sucesso
	 *                   False - Falha
	 */	
	public boolean deleteObj(Object o) {
		
		boolean ret = true;
		
		
		
		return ret;
		
	}
	
	//Fim métodos
}

[quote=riaranha] ela começou a dar pau.
[/quote]

Defina

Acontece como eu comentei, começou a dar problema logo no momento de instancia a classe, coisa q pela minha classe feita em Swing, no mesmo projeto está funccionando.

Pra ser mais específico ainda, nesse comando:

HibernateConf hibernate = new HibernateConf();

Com um step into no debug, o cursor de execução acaba indo para
package org.eclipse.osgi.internal.baseadaptor.ClassLoader, e por ai vai seguindo, principalmente por classes q não se dá para ver o código…ai dando um play pra liberar o break do debug, aparece o erro onde deveria estar a nova view.

O stacktrace é:

java.lang.NoClassDefFoundError: org/hibernate/HibernateException
at rgasoft.sgi_desktop.rcp.View.createPartControl(View.java:79)
at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:332)
at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:197)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:566)
at org.eclipse.ui.internal.Perspective.showView(Perspective.java:1675)
at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:987)
at org.eclipse.ui.internal.WorkbenchPage.access$13(WorkbenchPage.java:968)
at org.eclipse.ui.internal.WorkbenchPage$13.run(WorkbenchPage.java:3497)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3494)
at rgasoft.sgi_desktop.rcp.OpenViewAction.run(OpenViewAction.java:30)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:499)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:539)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:441)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at rgasoft.sgi_desktop.rcp.Application.run(Application.java:18)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)

A classe da view com o código acima citado:

public class View extends ViewPart {

	public static final String ID = "sgi_desktop.rcp.view";
	public static int vai = 0;
	
	public void createPartControl(Composite parent) {
		Composite top = new Composite(parent, SWT.NONE);
		GridLayout layout = new GridLayout();
		layout.marginHeight = 0;
		layout.marginWidth = 0;
		top.setLayout(layout);
		// top banner
		Composite banner = new Composite(top, SWT.NONE);
		banner.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL, GridData.VERTICAL_ALIGN_BEGINNING, true, false));
		layout = new GridLayout();
		layout.marginHeight = 5;
		layout.marginWidth = 10;
		layout.numColumns = 2;
		banner.setLayout(layout);
		
		// setup bold font
		Font boldFont = JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT);    
		
		Label l = new Label(banner, SWT.WRAP);
		l.setText("Subject:");
		l.setFont(boldFont);
		l = new Label(banner, SWT.WRAP);
		l.setText("This is a message about the cool Eclipse RCP!");
		
		l = new Label(banner, SWT.WRAP);
		l.setText("From:");
		l.setFont(boldFont);
    
		final Link link = new Link(banner, SWT.NONE);
		link.setText("<a>nicole@mail.org</a>");
		link.addSelectionListener(new SelectionAdapter() {    
			public void widgetSelected(SelectionEvent e) {
				MessageDialog.openInformation(getSite().getShell(), "Not Implemented", "Imagine the address book or a new message being created now.");
			}    
		});
    
		l = new Label(banner, SWT.WRAP);
		l.setText("Date:");
		l.setFont(boldFont);
		l = new Label(banner, SWT.WRAP);
		l.setText("10:34 am");
		// message contents
		Text text = new Text(top, SWT.MULTI | SWT.WRAP);
		text.setText("This RCP Application was generated from the PDE Plug-in Project wizard. This sample shows how to:\n"+
						"- add a top-level menu and toolbar with actions\n"+
						"- add keybindings to actions\n" +
						"- create views that can't be closed and\n"+
						"  multiple instances of the same view\n"+
						"- perspectives with placeholders for new views\n"+
						"- use the default about dialog\n"+
						"- create a product definition\n");
		text.setLayoutData(new GridData(GridData.FILL_BOTH));
		
		if (vai >= 1) {
			//Cria session do Hibernate
			HibernateConf hibernate = new HibernateConf();
			hibernate.createSession();
		} else {
			vai++;
		}
	}

	public void setFocus() {
	}
}

Os jars necessários para sua aplicação rodar devem ser declarados na aba run-time do arquivo plugin.xml, provavelmente vc tenha declarado via buildpath.
Outra coisa q pode estar ocorrendo é que a classe foi carregada por outro plugin, e com isso a plataforma RCP tenha se perdido, uma vez que para cada plugin é utilizado um classloader.

Espero ter conseguido te ajudar.

Alberto Anderick Jr.