[求助]有关roller部署到eclipse中的问题

Bing 2010-04-06 09:59:47
最近几天一直想看下roller,我从网上下载了roller的源码,按照网上的方法但是不成功,哪位大虾把roller在eclipse上编译后放到tomcat成功过!

①把roller-src/apps/weblogger/src/java目录下的org整 个目录的源文件复制到项目中的src里面;
②向lib中添加jar文 件。二种方法,可以从roller-src中的tools目录中逐个目录地把所有的jar文件拷贝出来,为了简单起见,还是从它的发布程序中直接拿更方便,从roller-bin中的WEB-INF/lib下面的所有jar都复制出来,放到我们的项目中的lib中去;
③ roller默 认是使用MySQL数据库,但是lib里面缺少MySQL的JDBC驱动,所以还要自己从网上下载驱动的jar,添加到WEB-INF/lib中,如果你是使用的其它数据库,同样需要手动下载它对应的驱动程序;
④从roller-bin中复制除了WEB-INF目录以外的所有文件,粘贴到我们项目中的WebRoot下面, 这些是页面文件和一些资源文件;
⑤复制roller-bin中的WEB-INF目 录下除了classes外的所有文件到我们项目中的WEB-INF目录下,覆盖掉默认的web.xml,你还可以发现它的一些jsp文件是放在WEB-INF下面的,起到很好的保护作用,roller是基于struts2开发的;
⑥从roller-bin中的WEB-INF/classes目录中,复制除了org目录外的所有文件,到我们项目中的src里面,这些是系统的配 置文件,包括了国际化资源、struts配置、log配置、数据库脚本等等。
⑦ roller还 用到了邮件功能,需要把activation.jar,mail.jar二个j2ee的jar复制到tomcat的common/lib目录下,如果没有这一步,可能启动初始化会失败!导致应用无法正常运行。

修改部分内容
①在我们项目的src中新建一个名称为roller-custom.properties的文件,roller采 用这个扩展配置现覆盖系统的默认配置。网上有些说要把这个文件放到tomcat的common/classes中,其实不用的,只要放在classpath中能找到就行了,所以我们把它放在我们的src目录下面,方便修改,在该文件中添加如下内容:
installation.type=auto
database.configurationType=jdbc
database.jdbc.driverClass=com.mysql.jdbc.Driver
database.jdbc.connectionURL=jdbc:mysql://localhost:3306/rollerdb?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8
database.jdbc.username=scott
database.jdbc.password=tiger
mail.configurationType=properties
mail.hostname=smtp-server.example.com
mail.username=scott
mail.password=tiger
注意database.jdbc.connectionURL这个配置后面需要带上上面编码的参数,不然安装的过程可能会出现一些乱码。修改url和username,password这些,如果你有能正常使用的邮箱服务器,也填上。

②创建MySQL数据库,名称为rollerdb,并指定编码为UTF-8。如果你使用的是root用户,则不用授权,如果不是,则需要 为用户授权,下面是一个示例:


启动roller的 时候它会查询数据库是否已经初始完成,如果没有,它会自动进入安装页面,引导用户进行安装,做得非常人性化。
③修改部分源代 码。org.apache.roller.weblogger包里面的pojos包是有问题的!刚开始的时候老是无法启动,报错提示的是JPA的一个异常,根本不知道如何解决,后来在CSDN上找到一篇文章,说是pojos这个包的源码有问题,可能跟发布包中的版本不一致,所以需要用变态一点的处理办法。


在我们的项目WEB-INF/lib中,找到roller-business.jar和roller-web.jar(如上图所示),这二个jar其实就是我们src中的所有java文 件的编译打包,为了不重复,先把roller-web.jar删除掉,然 后用winrar打开roller-business.jar,删除pojos以 外的其它四个包和那个WebloggerException.class。 这样,其它代码可以正常编译!

——————————————————————————————————————————————————————
我按照了上面的方法在eclipse中部署了roller可惜的是查看tomcat日志文件发现错误,找了好久还是找不到原因,求各位大侠们帮忙:
ERROR 2010-04-06 09:40:23,812 JPAPersistenceStrategy:<init> - ERROR: creating entity manager
javax.persistence.PersistenceException: Provider error. Provider: org.apache.openjpa.persistence.PersistenceProviderImpl
at javax.persistence.Persistence.createFactory(Persistence.java:175)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:111)
at org.apache.roller.weblogger.business.jpa.JPAPersistenceStrategy.<init>(JPAPersistenceStrategy.java:123)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at com.google.inject.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:46)
at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:142)
at com.google.inject.InjectorImpl$ImplicitBinding.get(InjectorImpl.java:1006)
at com.google.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:37)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:756)
at com.google.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:35)
at com.google.inject.Scopes$1$1.get(Scopes.java:53)
at com.google.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
at com.google.inject.BindingBuilderImpl$ImplicitImplementation.get(BindingBuilderImpl.java:334)
at com.google.inject.InjectorImpl$SingleParameterInjector.inject(InjectorImpl.java:640)
at com.google.inject.InjectorImpl.getParameters(InjectorImpl.java:666)
at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:140)
at com.google.inject.InjectorImpl$ImplicitBinding.get(InjectorImpl.java:1006)
at com.google.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:37)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:756)
at com.google.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:35)
at com.google.inject.Scopes$1$1.get(Scopes.java:53)
at com.google.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
at com.google.inject.BindingBuilderImpl$FactoryProxy.get(BindingBuilderImpl.java:299)
at com.google.inject.InjectorImpl$9$1.call(InjectorImpl.java:708)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:747)
at com.google.inject.InjectorImpl$9.get(InjectorImpl.java:702)
at com.google.inject.InjectorImpl.getInstance(InjectorImpl.java:728)
at org.apache.roller.weblogger.business.GuiceWebloggerProvider.bootstrap(GuiceWebloggerProvider.java:87)
at org.apache.roller.weblogger.business.WebloggerFactory.bootstrap(WebloggerFactory.java:134)
at org.apache.roller.weblogger.business.WebloggerFactory.bootstrap(WebloggerFactory.java:99)
at org.apache.roller.weblogger.ui.core.RollerContext.contextInitialized(RollerContext.java:156)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXNotRecognizedException: http://java.sun.com/xml/jaxp/properties/schemaLanguage
at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:376)
at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:315)
at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:292)
at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:266)
at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:440)
at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:291)
at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:258)
at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:156)
at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:70)
at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:82)
at javax.persistence.Persistence.createFactory(Persistence.java:171)
... 57 more
...全文
85 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bing 2010-04-06
  • 打赏
  • 举报
回复
定位了抛出错误的代码行,
try {
this.emf = Persistence.createEntityManagerFactory("RollerPU", emfProps);

} catch (PersistenceException pe) {
logger.error("ERROR: creating entity manager", pe);
throw new WebloggerException(pe);
}

Persistence.createEntityManagerFactory("RollerPU", emfProps);这行抛出的异常!
Visual Studio Code 是由微软开发的一款免费、开源、跨平台的现代化轻量级代码编辑器,自发布以来迅速成为全球开发者最受欢迎的工具之一。它结合了编辑器的轻便性和集成开发环境(IDE)的强大功能,支持多种编程语言和开发场景,核心特点: 1. 跨平台支持 可在 Windows、macOS 和 Linux 上运行,保持一致的用户体验。 2. 轻量级与高性能 启动速度快,占用资源少,适合处理大型项目或低配置设备。 3. 智能代码补全 内置 IntelliSense(智能感知),提供代码提示、参数信息、快速修复等功能,支持 JavaScript、TypeScript、Python、C++ 等主流语言。 4. 内置终端 直接在编辑器内打开集成终端(支持 PowerShell、CMD、Bash 等),方便执行命令行操作。 5. 调试工具 内置调试器,支持断点、变量监视、调用堆栈查看等,无需离开编辑器即可调试代码。 6. Git 集成 直接通过侧边栏管理 Git 仓库,支持提交、分支切换、冲突解决等操作。 7. 丰富的扩展生态系统 通过 Extensions Marketplace 可安装数千款插件,扩展功能包括: 语言支持:如 Java、Go、Rust 等。 主题与图标:自定义界面风格。 工具集成:如 Docker、Kubernetes、数据库连接等。 效率工具:如 REST Client、Live Server 等。 8. 自定义与主题 支持修改键盘快捷键、界面主题、文件图标等,打造个性化开发环境。 9. 多光标编辑 按住 Alt(Windows/Linux)或 Option(macOS)点击可添加多个光标,同时编辑多处代码。 10. 远程开发支持 通过 Remote - SSH、Remote - Containers 等扩展,可直接连接远程服务器或开发容器,实现无缝协作。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧