`
ember_319
  • 浏览: 21136 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Roller4终于在我的Idea8上成功编译并安装,跑起来了!

    博客分类:
  • Java
阅读更多

经过两天的努力,终于在Debian/Jdk6/Tomcat6/Idea8下跑起来了。

 

小小总结一下:

1,首先,编译项目源文件

    1)向apache-roller-src-4.0/tools/lib/ 下放入mail.jar和activation.jar;

    2)修改apache-roller-src-4.0/apps/weblogger/properties.xmlf 文件,如下:

<fileset id="base.jars" dir="${ro.tools}/lib">
    <include name="commons-id-0.1-SNAPSHOT.jar"/>
    <include name="commons-collections-3.2.jar" />
    <include name="commons-codec-1.3.jar" />
    <include name="commons-digester-1.6.jar" />
    <include name="commons-httpclient-2.0.2.jar" />
    <include name="commons-logging-1.0.4.jar" />
    <include name="commons-lang-2.1.jar" />
    <include name="concurrent-1.3.2.jar"/>
    <include name="jaxen-full.jar" />
    <include name="saxpath.jar" />
    <include name="jdom.jar"/>
    <include name="lucene-1.4.3.jar"/>
    <include name="log4j-1.2.11.jar"/>
    <include name="rome-0.9.jar"/>
    <include name="rome-fetcher-0.9.jar"/>
    <include name="velocity-1.5.jar"/>
    <include name="guice-1.0.jar"/>
    <include name="mail.jar"/><!-- ember added -->
    <include name="activation.jar"/><!-- ember added -->
</fileset>

    3)修改apache-roller-src-4.0/apps/weblogger/build.xml 文件,注释掉svn相关选项:

<!-- Get the SVN last changed rev value w/o using the overly flakey 
             svnant task. This will fail if svn is not in your PATH but the only 
             negative impact will be that the rev number that appears in your 
             log will be "${svn.LastChangedRev}" instead of the correct value. -->

        <!-- ember commeted
        <delete file="${ro.build}/svn.properties" />
        <exec executable="svn" output="${ro.build}/svn.properties" failifexecutionfails="false">
            <arg value="info" />
            <arg value="${root}" />
        </exec>
        <replace dir="${ro.build}">
           <include name="svn.properties" />
           <replacetoken> </replacetoken>
           <replacevalue></replacevalue>
        </replace>
        <property prefix="svn" file="${ro.build}/svn.properties"/>       
        
        <echo file="${build.compile.business}/roller-version.properties">
ro.version=${ro.version}
ro.revision=${svn.LastChangedRev}
ro.buildTime=${ro.buildTime}
ro.buildUser=${user.name}
        </echo>-->
 

    4)apache-roller-src-4.0/apps/weblogger/ 下运行ant build 或者ant dist,应该就编译成功了

 

 

2,解决启动NullPointerException错误

    我在idea8下启动时,发现启动listener出错,有NullPointerException异常。跟踪进去看了下,发现是初始化时试图寻找一个文件“roller-version.properties”,但是没有找到该文件,导致异常。我在项目源代码中没有找到那个文件,粗粗的看了下源码,似乎不一定非要那个文件不可,但是又不能不处理这个异常,所以简单的加了一个Cache,并输出到错误流。具体的步骤如下:

 

    1)修改类“org.apache.roller.weblogger.business.WebloggerImpl ”,如下:

package org.apache.roller.weblogger.business;

import org.apache.roller.weblogger.business.plugins.PluginManagerImpl;
import org.apache.roller.weblogger.business.plugins.PluginManager
//这里去除了过多的import项

/**
 * The abstract version of the Weblogger implementation.
 * 
 * Here we put code that pertains to *all* implementations of the Weblogger
 * interface, regardless of their persistence strategy.
 */
@com.google.inject.Singleton
public abstract class WebloggerImpl implements Weblogger {
    
    private static Log log = LogFactory.getLog(WebloggerImpl.class);
    
    // managers
    private final AutoPingManager      autoPingManager;
    private final BookmarkManager      bookmarkManager;
    private final FileManager          fileManager;
    private final IndexManager         indexManager;
    private final PingQueueManager     pingQueueManager;
    private final PingTargetManager    pingTargetManager;
    private final PluginManager        pluginManager;
    private final PropertiesManager    propertiesManager;
    private final RefererManager       refererManager;
    private final ReferrerQueueManager refererQueueManager;
    private final ThemeManager         themeManager;
    private final ThreadManager        threadManager;
    private final UserManager          userManager;
    private final WeblogManager        weblogManager;
    
    // url strategy
    private final URLStrategy          urlStrategy;
    
    // some simple attributes
    private final String version;
    private final String revision;
    private final String buildTime;
    private final String buildUser;
    
    
    protected WebloggerImpl(
        AutoPingManager      autoPingManager,
        BookmarkManager      bookmarkManager,
        FileManager          fileManager,
        IndexManager         indexManager,
        PingQueueManager     pingQueueManager,
        PingTargetManager    pingTargetManager,
        PluginManager        pluginManager,
        PropertiesManager    propertiesManager,
        RefererManager       refererManager,
        ReferrerQueueManager refererQueueManager, 
        ThemeManager         themeManager,
        ThreadManager        threadManager,
        UserManager          userManager,
        WeblogManager        weblogManager,
        URLStrategy          urlStrategy) throws WebloggerException { 
                
        this.autoPingManager     = autoPingManager;
        this.bookmarkManager     = bookmarkManager;
        this.fileManager         = fileManager;
        this.indexManager        = indexManager;
        this.pingQueueManager    = pingQueueManager;
        this.pingTargetManager   = pingTargetManager;
        this.pluginManager       = pluginManager;
        this.propertiesManager   = propertiesManager;
        this.refererManager      = refererManager;
        this.refererQueueManager = refererQueueManager;
        this.themeManager        = themeManager;
        this.threadManager       = threadManager;
        this.userManager         = userManager;
        this.weblogManager       = weblogManager;
        this.urlStrategy         = urlStrategy;
        
        Properties props = new Properties();
        try {
            props.load(getClass().getResourceAsStream("/roller-version.properties"));
        } catch (IOException e) {
            log.error("roller-version.properties not found", e);
        }

        
        catch(NullPointerException npe){//这里是我加入的代码
            log.error("roller-version.properties not found",npe);
        }
        version = props.getProperty("ro.version", "UNKNOWN");
        revision = props.getProperty("ro.revision", "UNKNOWN");
        buildTime = props.getProperty("ro.buildTime", "UNKNOWN");
        buildUser = props.getProperty("ro.buildUser", "UNKNOWN");
    }
  

    2)修改文件“org.apache.roller.weblogger.business.startup.DatabaseInstaller”,如下:

package org.apache.roller.weblogger.business.startup;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.DatabaseProvider;
import org.apache.roller.weblogger.pojos.WeblogPermission;


/**
 * Handles the install/upgrade of the Roller Weblogger database when the user
 * has configured their installation type to 'auto'.
 */
public class DatabaseInstaller {
    
    private static Log log = LogFactory.getLog(DatabaseInstaller.class);
    
    private final DatabaseProvider db;
    private final DatabaseScriptProvider scripts;
    private final String version;
    private List<String> messages = new ArrayList<String>();
    
    // the name of the property which holds the dbversion value
    private static final String DBVERSION_PROP = "roller.database.version";
    
    
    public DatabaseInstaller(DatabaseProvider dbProvider, DatabaseScriptProvider scriptProvider) {
        db = dbProvider;
        scripts = scriptProvider;
        
        Properties props = new Properties();
        try {
            props.load(getClass().getResourceAsStream("/roller-version.properties"));
        } catch (IOException e) {
            log.error("roller-version.properties not found", e);
        }

        
        catch(NullPointerException npe){//这里是我加入的代码
            log.error("no \"roller-version.properties\" ?");
        }
        version = props.getProperty("ro.version", "UNKNOWN");
    }

 

    3)最后,重新用ant build 和dist,生成roller-weblogger.war文件,位置:apache-roller-src-4.0/apps/weblogger/dist/webapp/roller-weblogger.war 。在idea8中选中这个war文件,设置Tomcat6的启动环境即可,这个步骤就不在这里详细说明了。

 

 

大家试试看,是不是还有什么问题,有兴趣的人可以一起讨论下。

 

 

分享到:
评论
2 楼 gembler 2008-12-06  
pn2008 写道
roller4做什么用的?

Roller: free and open source Java blog software
1 楼 pn2008 2008-12-06  
roller4做什么用的?

相关推荐

    roller安装

    《roller安装指南——深入探索源码与工具应用》 在IT行业中,经常需要处理各种开源项目,以便定制、学习或优化。"roller"是一个颇受欢迎的开源博客引擎,它为开发者提供了一个强大的平台来创建、管理和发布个人或...

    roller

    标题中的"roller"很可能指的是Apache Roller,一个开源的博客服务器平台。这个平台允许用户创建、管理和发布多个博客,并且提供了丰富的API供开发者扩展其功能。接下来,我们将深入探讨与"roller"相关的技术知识点。...

    Roller初体验

    将Roller部署到Tomcat中,首先需要确保Tomcat服务器已经正确安装并运行。接着,将Roller的WAR文件放入Tomcat的webapps目录下,Tomcat会自动解压并启动应用。博主可能还分享了配置环境变量、数据库连接等步骤。 4. *...

    3DMAX卷曲修改器Roller下载

    3DMAX是一款强大的三维建模、动画和渲染软件,广泛应用于游戏开发、影视特效和建筑设计等领域。在3DMAX中,卷曲修改器是实现复杂...通过熟练掌握并运用Roller,设计师们可以更好地将他们的创意转化为生动的三维世界。

    Apacheroller

    - 安装并启动新版本的 Roller。 2. **备份旧版本**: - 在升级之前,备份所有重要的数据和文件。 3. **安装并启动新版本**: - 按照安装指南进行操作。 #### roller.properties 文件详解 `roller.properties` 是 ...

    Apache Roller

    Apache Roller是一个全功能,多用户和组博客服务器,适合大型和小型博客网站。它运行一个Java Web应用程序应该能够运行在任何Java EE服务器和关系数据库。目前,Apache Roller能很好的支持Tomcat和MySQL。 本人用...

    roller install、user、template guide

    在安装"roller"之前,我们需要确保系统满足必要的先决条件,比如操作系统支持(可能是Linux、Windows或macOS)、Java运行环境(JRE或JDK)以及足够的硬盘空间。安装过程通常包括以下步骤: 1. 下载:从官方网站或者...

    roller5 for tomcat

    Roller 5的强大之处还体现在其丰富的API和插件机制上。开发者可以通过RESTful API来实现与其他系统的集成,例如社交媒体分享、RSS订阅等。同时,Roller 5提供了大量的可扩展点,允许用户根据需求开发自定义的插件,...

    roller-install-guide.pdf

    ### Apache Roller Weblogger 安装指南知识点概览 #### 一、概述 - **文档目的**:本文档旨在提供详细的安装指南,帮助用户顺利安装 Apache Roller Weblogger 软件。文档涵盖了安装前的准备工作、如何下载软件、...

    Roller4.0的另外一套cas简单解决方案

    最近在使用roller4.0和cas的单点登录集成.中间碰到了很多很多的问题.也许我碰到的问题都是属于自己的技术不成熟,能力不够引起的.但是我想应该还是有很多人和我是差不多的吧.我把自己碰到的问题和解决方案写出来和...

    roll:roll-使用Roller引导或升级Unix主机

    Roller是一个主机管理系统,可以安排软件包和配置文件以可靠,可重复和源代码控制的方式安装在主机上。 以下主要组件包括Roller: 具有源控制的主机和主机类定义的数据存储库 静态,预编译的软件包 配置服务器,...

    file-roller-3.28.1-4.el8.aarch64.rpm

    离线安装包,亲测可用

    Roller.part4

    该软件是一个开源的BLOG系统,是目前的最新版。 其中用到的技术有:SPRING HIBERNATE STRUTS等。 一共4部分

    apache优秀Java开源项目源代码—— apache-roller!

    4. **JPA和Hibernate**:Roller使用了Java Persistence API (JPA) 和 Hibernate 实现对象关系映射(ORM)。通过源码,可以学习到如何定义实体类,配置实体关系,以及如何执行CRUD操作。 5. **Spring框架**:Roller...

    开源Java博客Roller v5.0 for tomcat.zip

    Roller 是一个全功能的多用户博客平台,于2002年首发,采用Java语言开发,设计精巧,源代码是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS ...

    apache-roller-4.0.1

    - **Java EE应用服务器**:Apache Roller作为一个Web应用,需要在Java EE兼容的应用服务器上运行,如Tomcat、Jetty等。 - **WAR文件**:解压"apache-roller-4.0.1"压缩包后,你会得到一个WAR(Web ARchive)文件,...

Global site tag (gtag.js) - Google Analytics