开发Eclipse Plugin的过程中,难免要用到其它的Framework或Lib,如果自己不做配置,那么Eclipse不会自动把这些jar文件作为Plugin运行的classpath,因此Plugin运行的时候就会出错。怎么办呢?
假设我们使用的第三方jar文件都放置在Plugin根目录的lib目录下。那么首先要做的是把这些jar文件包含到Plugin的build中,打开plugin.xml文件,在Build一页中选择lib目录,这样最后export出了Plugin就会包含这些jar文件了。但是这还不够,因为虽然有了jar文件,Plugin还是不知道应该使用它们。还是在Build页中,我们可以看到在最低端有一个叫做Extra Classpath Entries的section。是不是要配置这个东东呢?我们来试试。
点击这个section右侧的Add JARs按钮,添加相应的jar文件,发生了什么?哦,Eclipse报错了,它说当前Plugin的Build Path中含有重复的lib。这是怎么回事儿呢?去看看Build Path就会发现,原来你刚刚添加的jar文件出现在了Plug-in Dependencies中。再加上原来你已经把这些jar加入了Build Path,难怪会出错。好了,把你自己对Build Path的配置去掉,这样就没有重复了。运行Plugin试试?还是不行。
看来Extra Classpath Entries并不是需要配置的地方,但是这里也有一个Happy Accident,那就是你以后再开发Plugin的时候,不用自己配置Build Path了,只需要在Extra Classpath Entries中添加jar文件就好了。但是需要注意的是,这个配置只能保证你的Plugin通过编译,真正运行的时候还是找不到jar文件的。
其实,这个问题的正解在MANIFEST.MF文件中,你需要在这个文件中添加一个配置,才能在Plugin运行时使用第三方jar文件。来看看需要加什么配置吧~
Bundle-ClassPath: lib/cglib-full-2.0.2.jar,
lib/commons-beanutils.jar,
lib/commons-collections-2.1.1.jar,
lib/commons-lang-1.0.1.jar,
lib/commons-logging-1.0.4.jar,
lib/dom4j-1.4.jar,
lib/ehcache-0.9.jar,
lib/hibernate2.jar,
lib/jta.jar,
lib/jthincommon.jar,
lib/odmg-3.0.jar
看到了吧,以上是使用Hibernate 2.1.8所需要的配置。这个配置非常简单,但是我不知道为什么PDE没有提供一个interface让我们配置。没办法,目前我们只能自己添加了,因为在Eclipse 3.2中也没有可以配置这个属性的interface。
posted @ 2006-09-08 17:44 Allen Young 阅读(753) 评论(1)
编辑
我们在使用Hibernate时一般都会编写一个hibernate.cfg.xml文件,并在其中配置一些连接数据库的属性。这在很多情况下都是非常合适的,但是如果需要动态获得数据库链接信息,这种方法就不行了。假设我们要根据用户的输入信息连接响应的数据库,该怎么办呢?
我们都知道,Hibernate的SessionFactory是通过Configuration获得的,hibernate.cfg.xml文件中配置很多信息都对应为Configuration的Property,因此只要可以为Configuration设置属性并添加hbm.xml信息,就可以动态的获得SessionFactory了。具体代码如下:
Properties jdbcPros = new Properties();
jdbcPros.setProperty("hibernate.connection.useUnicode", "true");
jdbcPros.setProperty("hibernate.connection.characterEncoding", "UTF-8");
jdbcPros.setProperty("hibernate.connection.driver_class", "org.gjt.mm.mysql.Driver");
jdbcPros.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/your_db");
jdbcPros.setProperty("hibernate.connection.username", "root");
jdbcPros.setProperty("hibernate.connection.password", "your_pw");
jdbcPros.setProperty("hibernate.dialect", "net.sf.hibernate.dialect.MySQLDialect");
jdbcPros.setProperty("hibernate.show_sql", "false");
jdbcPros.setProperty("hibernate.use_outer_join", "true");
jdbcPros.setProperty("hibernate.transaction.factory_class", "net.sf.hibernate.transaction.JTATransactionFactory");
Configuration cfg = new Configuration();
cfg.setProperties(jdbcPros);
try {
cfg.addFile("A.hbm.xml");
cfg.addFile("B.hbm.xml");
} catch (MappingException e) {
e.printStackTrace();
}
try {
SessionFactory sessionFactory = cfg.buildSessionFactory();
} catch (HibernateException e) {
e.printStackTrace();
}
一目了然,代码说明了一切。我们可以为Configuration设置很多Property,其中一些是必须的,一些是可选的。具体的Property列表请参考Hibernate的Reference。
posted @ 2006-09-08 11:36 Allen Young 阅读(613) 评论(0)
编辑