eclipse Reference 功能之——项目之间的引用
i'm sorry, i forgot this article where i found. that it is referenced.
以前也研究过Eclipse里Web Project引用Java Project的问题,没有解决,特地再深入研究了一下。
思路及实践如下:
1.Elcipse里Project Properties里有Project Reference的设置,说明有这个特性,Java Builder Path里也有引用的Projects设置。
试验:建立两个Java Project A、B,B引用A,设置B的Java Builder Path/Projects引用Project A,则B中的Class可以调用A中的Class,编译和运行都通过。
说明Eclipse对Java Project的解决方案良好。
(Project Reference的设置不知道有什么用处)
2.Web应用,使用Eclipse WTP
按上面的试验设置,(这里的B项目是一个Web项目),编译可以通过,但是运行时找不到A项目中的类。
没有找到有相应的解决方案。
3.Web应用,使用Sysdeo Tomcat Plugin
发现有这个Window/Preferences/Tomcat/Advanced/Add Java Projects to Tomcat classpath设置,将Java项目设置到Tomcat的类路径中,对Tomcat是全局的,有一些不灵活,和其它的缺陷,比如加载这些类的ClassLoader将是SystemClassLoader而不是WebAppClassLoader,这将影响某些资源文件的加载。
另外,我在Tomcat5.5.17上试验这个设置,结果启动Tomcat就出错。
看了Sysdeo的文档,它介绍了DevLoader就专门解决这个问题的。看了一下他的源码,很简单,总共只有200行,基本上的逻辑是,读取Eclipse项目下的.#webclasspath、.classpath文件以获得引用的java类路径,由
DevLoader加载这些项目外的类。
具体操作是:
1)设置Java Builder Path;
2)将Sysdeo Plugin下的DevLoader.zip解压到Tomcat目录/server/classes下,在Tomcat Project/Project Properties/Tomcat/Devloader 中选中Active DevLoader,及选中列表中项目外的classpath。
参考Sysdeo Plugin的ReadmeDevLoader.html.
这样就解决了这个问题,效果是:修改了项目A、B中的代码,不用重起Tomcat,就可以在浏览器中立即看到修改后的效果。
==========================================
Sysdeo Eclipse Tomcat Launcher plugin 是做J2EE开发的时候经常用到的一款插件,可以在Eclipse中启动Tomcat,同时可以把Tomcat进程绑定到Eclipse Java Debugger中,这样可以在运行时进行一些debug操作,当修改或者新增、删除了一些java文件以后,Tomcat Context会自动重新load,这样不用每次做了修改都需要重启Tomcat。
在使用这款插件的时候,往往很多人会遇到这样的一个异常:ClassNotFoundException: org.apache.catalina.loader.DevLoader,很多人解决的办法往往是禁用DevLoader功能。其实DevLoader提供的功能是很有用的,它实现和扩展了WebappLoader。我们知道,默认情况下,我们需要把classes和jar文件都放到web应用所在的WEB-INF/classes和WEB-INF/lib下,但是在实际的开发环境下,往往需要引用到外部的classes和jar文件,比如另外一个项目中的classes,这个时候如果在没有DevLoader的情况下我们需要把这些classes和jar文件拷贝到web应用所在的WEB-INF下的相应目录中,而如果启用了DevLoader,则没有了上述的限制,可以加载项目用到的所有classpath中的classes和jar。
启用DevLoader的方法:
选中Activate DevLoader
选中需要加载的类库
在插件包中找到文件DevLoader.zip,解压缩到tomcat/server/classes下。
http://sam9901.iteye.com/blog/114746
eclipse Reference 功能之——项目之间的引用的更多相关文章
- 适AT maven多个子项目、父项目之间的引用问题
适AT maven多个子项目.父项目之间的引用问题 在项目时用到maven管理项目,在一个就项目的基础上开发新的项目:关于子项目和父项目,子项目与子项目之间的调用问题,发现自己存在不足,以下是自己 ...
- .NET三层架构各项目之间的引用关系及如何添加引用?
1.1三层之间的引用 整个.NET框架的项目创建完成之后,在开发之前,还需要建立各个项目之间的引用关系,以便在编写C#业务逻辑代码时调用相关项目的类库. 1.1.1 引用关系规则 .NET三层架构中的 ...
- maven多个子项目、父项目之间的引用问题
在项目时用到maven管理项目,在一个就项目的基础上开发新的项目:关于子项目和父项目,子项目与子项目之间的调用问题,发现自己存在不足,以下是自己查询的问题,解决了自己的疑惑. 问题 下面是一个简略的项 ...
- c# 项目之间循环引用vs弹窗提醒
circular dependencies in projects' graph ! Projects in cycle are:ProjectImp(Name:FrameWork.Entity,Pl ...
- Maven环境下面多项目之间的引用
如图: https://github.com/sdl/odata-example sdl OData例子包含了4个项目,下载到本地后编译.发现只有model项目是可以编译过去了.其他几个暂时编译不过 ...
- Android学习笔记_71_Android 多个项目之间如何引用 项目怎样打jar包
一.将整个项目作为资源文件 1.需要将被应用的项目设置为库项目. 2.将该项目的配置文件中的四大组件清空,例如下面代码: <?xml version="1.0" encodi ...
- 两个Java项目之间相互调用
转自:http://dysfzhoulong.iteye.com/blog/1008747 一个项目A另一个项目B:(项目A和项目B都是Java写的项目) 在A项目中怎么调用B项目中的类和方法 有两种 ...
- 与Eclipse关于"Call Hierarchy"和"Find Reference"功能比较
"Call Hierarchy"功能比较 Eclipse的"Call Hierarchy"可以查看一个Java方法或类成员变量的调用树(caller和calle ...
- [Eclipse的Maven项目搭建,仅为测试Maven功能]如何在Eclipse下搭建Maven项目
[Eclipse的Maven项目搭建,仅为测试Maven功能]如何在Eclipse下搭建Maven项目 你可能需要了解以下才能更好的阅读以下: 在 Windows 中配置Maven: http:/ ...
随机推荐
- web中的相对路径与绝对路径
1.什么叫绝对路径 相对于WEB应用的跟路径的路径,即任何路径都必须带上contentPath. 2.javaEE中的/代表什么 代表WEB应用的跟路径(需交由Servlet容器处理) 请求转发时. ...
- Xposed模块开发教程
转:http://vbill.github.io/2015/02/10/xposed-1/ http://blog.csdn.net/zhangmiaoping23/article/detai ...
- 41-2:和为S的连续正数序列
import java.util.ArrayList; /** * 面试题41-题目2:和为S的连续正数序列 * 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案 ...
- git获取帮助
想了解 Git 的各式工具该怎么用,可以阅读它们的使用帮助,方法有三: $ git help <verb> $ git <verb> --help $ man git-< ...
- 安卓webview断网处理
需求:webview在加载的时候如果网络断开,会显示默认的错误界面,长得很丑,需要单独写一个页面,在网路出错的时候显示,点击重试以后重新加载网页 乍看挺简单的需求,但在实际过程中页碰到了不少坑,主要是 ...
- react篇章-React State(状态)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...
- 在 Pandas 中更改列的数据类型
import pandas as pd import numpy as np a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0' ...
- 使用IDEA运行Eclipse编辑jetty运行的J2EE项目的惨痛教训
公司的项目原本是使用Eclipse,使用自带的jetty运行, 用IDEA通过git clone后,使用Tomcat运行,可以运行,却无法访问页面,总是报错404 后来使用IDEA Jetty运行,经 ...
- Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister报错解决办法
在做Hibernate框架数据库的关联关系映射练习中出现了Could not get constructor for org.hibernate.persister.entity.SingleTabl ...
- JAVAEE——宜立方商城07:Linux上搭建Solr服务、数据库导入索引库、搜索功能的实现
1. 学习计划 1.Solr服务搭建 2.Solrj使用测试 3.把数据库中的数据导入索引库 4.搜索功能的实现 2. Solr服务搭建 2.1. Solr的环境 Solr是java开发. 需要安装j ...