关于修改JBoss Portal源代码时出现的相关问题和解决方式
2012-03-22 13:45
363 查看
近期由于中文的问题,要改写JBoss Portal的源代码,编译时非常麻烦,不仅依赖包众多,而且所依赖的包竟然有类冲突的情况。
下载包的方法也比较麻烦,首先是因为有些包从Maven上下载不到,我的解决方法是从http://grepcode.com/上找源文件,然后找相应的jar包(这个网站做的不错,对查看源代码有很大帮助),其次是不知道到底是依赖哪个版本,不同版本的jar包可能变化很大,这个问题的解决方法是参考运行时环境的jar包版本,如果找不到运行时环境的包就只有乱猜一个了,编译出错了再换
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/crazy.gif)
![](http://hi.csdn.net/attachment/201203/22/0_1332393951RL3n.gif)
例如上述依赖包中,最后两项 jbosscache-core-3.2.7.GA.jar 和 jboss-cache-1.2.2.jar 中有多个 包名、类名都相同的类,例如org.jboss.cache.Modification 这个类在两个包里都有,而这两个包都是编译必须的。最后发现,通过Eclipse导入jar包后(我的开发环境是STS),编译时会优先在Classpath中找先导入的jar包。所以我尝试添加第一个jar包时单独编译一个依赖的文件,然后加入第二个jar包,单独编译另一些有依赖关系的类。(单独编译一个类的方法是在此类中写main函数并调用)很遗憾,失败了。
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/crazy.gif)
最后的解决方法是,把两个jar包都加导入到Classpath,对依赖后面一个jar包的冲突类(例如 org.jboss.cache.Modification)对源文件进行改写,使它不报错就行,这样所有的代码都能通过编译,然后只把需要修改的源代码对应的.class文件覆盖到源jar包中就OK了。
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/tongue.gif)
修改其他的源代码也可以用与此类似的方式进行~
下载包的方法也比较麻烦,首先是因为有些包从Maven上下载不到,我的解决方法是从http://grepcode.com/上找源文件,然后找相应的jar包(这个网站做的不错,对查看源代码有很大帮助),其次是不知道到底是依赖哪个版本,不同版本的jar包可能变化很大,这个问题的解决方法是参考运行时环境的jar包版本,如果找不到运行时环境的包就只有乱猜一个了,编译出错了再换
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/crazy.gif)
![](http://hi.csdn.net/attachment/201203/22/0_1332393951RL3n.gif)
例如上述依赖包中,最后两项 jbosscache-core-3.2.7.GA.jar 和 jboss-cache-1.2.2.jar 中有多个 包名、类名都相同的类,例如org.jboss.cache.Modification 这个类在两个包里都有,而这两个包都是编译必须的。最后发现,通过Eclipse导入jar包后(我的开发环境是STS),编译时会优先在Classpath中找先导入的jar包。所以我尝试添加第一个jar包时单独编译一个依赖的文件,然后加入第二个jar包,单独编译另一些有依赖关系的类。(单独编译一个类的方法是在此类中写main函数并调用)很遗憾,失败了。
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/crazy.gif)
最后的解决方法是,把两个jar包都加导入到Classpath,对依赖后面一个jar包的冲突类(例如 org.jboss.cache.Modification)对源文件进行改写,使它不报错就行,这样所有的代码都能通过编译,然后只把需要修改的源代码对应的.class文件覆盖到源jar包中就OK了。
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/tongue.gif)
修改其他的源代码也可以用与此类似的方式进行~
相关文章推荐
- 关于使用asp.net调试器出现的问题及相关解决方法
- 【札记】Linux下 MySQL-5.7.17 tar.gz 包方式安装部署后出现密码过期的问题解决(不修改/etc/my.cnf文件)
- 在JBossPortal中使用MySQL5出现数据截断问题的解决方法
- 关于使用VS.Net2003调试器出现的问题及相关解决方法[转]
- 关于使用VS.Net2003调试器出现的问题及相关解决方法
- 关于各种文件用Editplus的方式打开出现“向程序发送命令时出现问题”的解决方法
- 关于Preference相关控件修改出现的问题
- 关于使用VS.Net2003调试器出现的问题及相关解决方法
- 关于 LF will be replaced by CRLF 问题出现的原因以及解决方式
- 关于使用VS.Net2003调试器出现的问题及相关解决方法 (转)
- 关于各种文件用Editplus的方式打开出现“向程序发送命令时出现问题”的解决方法
- ecliplse 远程提交程序到虚拟机 hadoop集群 , 修改Hadoop的源代码---NativeIO问题解决!
- 关于 qt程序退出出现“已停止工作”程序奔溃问题 的解决方法
- 关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
- asp.net调试器出现的问题及相关解决方法
- 关于在uwsgi server中出现cassandra超时问题的解决
- 关于 MyEclipse 突然出现 Error starting Tomcat 6.x server 问题的解决
- 关于Android多项目依赖在Eclipse中无法关联源代码的问题解决
- 关于iOS UITableView 数据源数组加载完成之后,滑动时出现cell为空的问题解决笔记
- 关于网络爬虫出现configure build path 问题的解决