我正在学习rcp,现在建立一个plug-in project项目。现在出现点问题,各位帮忙看一下:
错误提示:
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:126)
at com.boyi.jfcs.sys.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:12)
at com.boyi.jfcs.system.Login.isValidate(Login.java:55)
at com.boyi.jfcs.system.Login.isLogin(Login.java:45)
at com.boyi.jfcs.app.Application.start(Application.java:28)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
以下是代码:
HibernateSessionFactory.java
- package com.boyi.jfcs.sys;
- import org.hibernate.HibernateException;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- public class HibernateSessionFactory {
- private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
- private static final Configuration cfg = new Configuration();
- private static SessionFactory sf;
- //获取session对象
- public static Session getSession(String configFile) throws HibernateException{
- Session session = (Session) threadLocal.get();
- if(session == null || !session.isOpen()){
- if(sf == null){
- try{
- cfg.configure(configFile);
- sf = cfg.buildSessionFactory();
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- session = (sf == null)? null:sf.openSession();
- threadLocal.set(session);
- }
- return session;
- }
- //关闭session对象
- public static void closeSession() throws HibernateException{
- Session session = (Session) threadLocal.get();
- threadLocal.set(null);
- if(session != null){
- session.close();
- }
- }
- }
Login.java
- package com.boyi.jfcs.system;
- import java.util.HashMap;
- import java.util.Map;
- import org.eclipse.core.runtime.CoreException;
- import org.eclipse.core.runtime.Platform;
- import org.eclipse.core.runtime.preferences.ConfigurationScope;
- import org.eclipse.jface.dialogs.MessageDialog;
- import org.eclipse.jface.window.Window;
- import org.eclipse.swt.widgets.Display;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.osgi.service.prefs.Preferences;
- import com.boyi.jfcs.model.SaveLogInfo;
- import com.boyi.jfcs.sys.HibernateSessionFactory;
- import com.boyi.jfcs.sys.IAppConstants;
- import com.boyi.jfcs.ui.LoginDialog;
- public class Login {
- public boolean isLogin(){
- final LoginDialog loginDialog = new LoginDialog(Display.getCurrent().getActiveShell());
- boolean loop = false;
- while(!loop){
- if(loginDialog.open() != Window.OK){
- return false;
- }
- String username = SaveLogInfo.getINSTANCE().getUsername();
- String password = SaveLogInfo.getINSTANCE().getPassword();
- loop = isValidate(username,password);
- if(!loop){
- MessageDialog.openWarning(null,"提示","用户名或者密码错误,无法登陆");
- }
- }
- return loop;
- }
- private boolean isValidate(String username, String password){
- boolean logtag = false;
- Session session = HibernateSessionFactory.getSession("hibernate_derby.cfg.xml");
- String hql = "from Users where username:user and password:pwd";
- Query query = session.createQuery(hql);
- query.setString("user", username);
- query.setString("pwd", password);
- if(query.list().size() > 0){
- logtag = true;
- }
- HibernateSessionFactory.closeSession();
- return logtag;
- }
- }
搞定了,,谢谢群里边各位了,问题还是少几个包:lib/log4j-1.2.15.jar,lib/commons-logging.jar,lib/commons-pool.jar。
在plugin.xml里边选择Runtime页面,有下侧有个classpath:依次添加以上几个包就好了。