1.解压intelligentcode-DocViewer-ba2994a.zip包
2.观察目录结构:.idea,为IDEA集成开发环境的配置目录,可以忽略
docviewer:发现下面有src和Web应该是一Web工程
docviewerapi:里面全是java类,作者应该想将该部分独立成一个jar包,但还未打包
docviewerflex:如名,Flex工程。打开docviewerflex.iml文件,发现<module
type="Flex" version="4">,证实是FLEX4,学过一点Flex4,我们只需要它编译生成的swf等文件就行了,源码以后研究。这个编译生成的swf文件类似百度文库的查看文档的swf.
docviewerflex.backup:如名,为备份,跳过
etc:拓展暂不看,看文件名,是什么中文处理的问题
lib:项目依赖到的jar包,但在MyEclipse中默认的WEB项目是添加了j2ee6库的。
3.开始迁移到myeclipse:建一个docviewer的web项目(注意项目的Web根目录指定要为“web“,后面就是我没有一开始设置webroot的问题),导入docviewer的文件,发现web和WebRoot不同,修改它,把WebRoot弄掉,可以在工程上右击-》properties->myeclipse->web->右侧的ContextRoot修改。把多的J2EE5Library去掉。把WebRoot删掉。发现有好多错误,全是 类找不到,说明类没有导入完成。
建一个docviewerapi的java项目,把docviewerapi的代码导入,发现仍然好多错-。-
忘了jar包呀,是不,把jar包一股脑导入进两个工程,当然,你想一个个的导,避免,也行,就是耗时间。我是不想再这么弄了,麻烦。别忘了加buildpath,然后有一点,把docviewerapi加入到docviewer的buildpath当中去。
具体操作是在ReferencedLiberaries中,大根就是在buildpath中添加docviewerapi的bin目录
PS,如果一切都做完了,错误仍然在?那么请按:alt+p,然后选择clean....
发布,启动,失败,看异常,看causeby Filter mapping must specify
either a <url-pattern> or a <servlet-name>
这个错误是myeclipse10.0出现的,在myeclipse8.6不会出现。修改web.xml中的如下处:
<filter-mapping>
<filter-name>uploaderFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
重启。报:java.lang.ClassNotFoundException:
com.log4ic.utils.support.DocViewerServiceListener,定位:在docviewerapi中,看来不能通过添加其它工程的bin目录来添加依赖(实验失败),怒了,把docviewerapi中的src拷到docviewer的src,合并后(ant脚本也可以考,那个xml文件里有依赖关系的。),重新发布,启动,这次应该报数据库连接错误了吧。X,仍然报java.lang.ClassNotFoundException:
com.log4ic.utils.support.DocViewerServiceListener//经过一系列与buildpath斗争之后,修复了
看发布目录下:没在类文件....检查发现WebRoot没有删掉,lib包也加错地方了,应该放到Web下面,放了之后,为什么没有起作用?检查。。。 <classpathentry
kind="output" path="WebRoot/WEB-INF/classes"/>最后在工程的.classpath发现了这东西,输出地方不对,难怪。但是红XX出来了好多,因为jar包们都没加到buildpath的问题
PS,你可以把两个工程的代码合并在一起,形成一个工程。
几经波折,终于到了数据库报错的时候了,哈哈
4.office转换服务启动失败!详细信息:java.lang.IllegalArgumentException:
officeHome must exist and be a directory
这个是:/docviewer/src/conf/docviewer.properties中相应的路径未配正确,改成相应的位置即可,pdf2swf处应加为path或者指定为绝对路径
其中,openOffice或LiberyOffice要进行一个设置,好像是启用一些功能,参看作者吧。
5.dbcp.SQLNestedException: Cannot load JDBC driver class
'org.apache.derby.jdbc.EmbeddedDriver'
这个问题就是,作者用的derby而且是用了数据源的,数据源的配置位置比较难找,在/docviewer/web/META-INF/context.xml内容如下
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/">
<Resource name="jdbc/docviewerDB" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/docviewer?characterEncoding=UTF-8"
maxActive="20"
maxIdle="10"
maxWait="5000"
username="root"
password="root"
/>
</Context>
修改配置,改成我的Mysql,相应的改好之后,加一个Mysql的驱动(外部tomcat放在tomcat/common/lib下,集成tomcat放在D:\ProgramFiles\MyEclipse10.0\Common\plugins\com.genuitec.eclipse.easie.tomcat.myeclipse_9.0.0.me201109141806\tomcat\lib下)。具体请百度数据库连接池的配置
终于无错误启动,打开页面一看……..
报了那个NullPointer错误了,参看以前的解决吧,呵呵。
我忘了我是怎么解决的了。。。。
root cause
java.lang.NullPointerException org.apache.jsp.documents_jsp._jspInit(documents_jsp.java:28) org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) com.log4ic.utils.io.FileUploaderFilter.doFilter(FileUploaderFilter.java:32)
把CharsetFilter去掉后仍然报错,把FileUploaderFilter也去掉试试(仍然不行),说明方向走错,弄回去。。。发现web.xml中有一个配置了上传文件路径的地方错了,改之。
我记得好像是javaee5和javaee6的问题。最后,我只有去看了看上次配好的lib包和现在的lib包有什么不同,坑爹,lib/javaee6下的3个jar包只用导javax.per....jar,删除两个(Myeclipse的BUG,在发布的web目录中的lib包没能自动删除,而且手动删除也删除不掉,只能先删除发布,然后删除lib下的两个多余的jar,然后再重新发布),成功,搞定。哈哈、
最后,总结一下,其实docviewerapi是应该作为一个源文件夹导入myeclipse的。
root cause
java.lang.NullPointerException org.apache.jsp.documents_jsp._jspInit(documents_jsp.java:28) org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) com.log4ic.utils.io.FileUploaderFilter.doFilter(FileUploaderFilter.java:32)