在導入網友提供的Tomcat源碼工程時候出現了
The project cannot be build until build path errors are resolved
Unbound classpath variable:"a_Tomcat6-depend/ant1.7/ant.jar " in project Tomcat6
弄了一個早上才意識到錯誤出現在工程的“.classpath”文件里面
改文件內容為:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="var" path="a_Tomcat6-depend/ant1.7/ant.jar"/>
<classpathentry kind="var" path="a_Tomcat6-depend/puretls-0.95/puretls-0.95.jar"/>
<classpathentry kind="var" path="a_Tomcat6-depend/commons/common-logging1.1.1/commons-logging-1.1.1.jar"/>
<classpathentry kind="var" path="a_Tomcat6-depend/jaxrpc1.1/jaxrpc.jar"/>
<classpathentry kind="var" path="a_Tomcat6-depend/jdt3.3/org.eclipse.jdt.core_3.3.0.v_771.jar"/>
<classpathentry kind="var" path="a_Tomcat6-depend/wsdl4j-1.5.1/wsdl4j-1.5.1.jar"/>
<classpathentry kind="output" path="classes"/>
</classpath>
發現目錄里并不存在"a_Tomcat6-depend"一文件夾,而實際目錄為“Tomcat6/lib/ant1.7/ant.jar”。于是
把該設置改為“lib/ant1.7/ant.jar”,依然報同類錯誤。于是很自然地對“.classpath”定義的方式產生了興趣,終于找到一篇高
手寫的關于“eclipse下環境配置”的文章。
原來<classpathentry kind="var"
path="a_Tomcat6-depend/ant1.7/ant.jar"/>這種定義方式是運用了eclipse的環境變量,換句話說
a_Tomcat6-depend 應該是一個環境變量(make sense!)。
于是 Window->Refernces->Java->Build Path->Classpath Variables
定義了一個name為a_Tomcat6-depend
Then,Done.
eclipse中需要關聯到第三方JAR文件時,可以直接添加JAR文件,也可以增加環境變量的形式來添加JAR文件,當然原理都是一樣的,都是引用
JAR文件,除了可以直接右點擊工程,屬性,在"Java Build Path"中添加外,其實還可以直接編輯工程目錄下的
.classpath這個文件,這個文件即是記錄工程中的一些環境變量及工程中文件的輸出目的的,此文件結構大至如下:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/java"/>
<classpathentry kind="src" output="target/test-classes" path="src/test"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="var" path="MAVEN_REPO/activation/jars/activation-1.0.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/mvc/jars/mvc-1.0.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/ehcache/jars/ehcache-1.0.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/CodeManager/jars/CodeManager-1.0.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/jetspeed/jars/jetspeed-1.4.jar"/>


.
<classpathentry kind="var" path="MAVEN_REPO/dwr/jars/dwr-1.1.1.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/servletapi/jars/servletapi-2.4.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/jspapi/jars/jsp-api-2.0.jar"/>
<classpathentry kind="lib" path="D:/workspace/repository/junit/jars/junit-3.8.1.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
其中,src是源文件輸出目的的,output是類文件輸出目的的,con是eclipse運行時所需的核心包,var是通過環境變量的形式增加的一些
JAR包,lib是直接加入的JAR包,所以需要加入一些第三方的JAR文件時,直接編輯此文件即可,eclipse不需重啟,工程即可生效.
有關說明:
有時從別的工程導入到另一個工程時,工程名旁邊有一個紅插,而這時可能有很多人認為是某個地方導入的不對,或有些文件沒導入完全,當然也有這個可能,但大
多數是因為原工程中引入了一些環境變量,而導入到本機上的eclipse時,環境變量路徑發生了變化,eclipse找不到相關的JAR文年,所以工程名
旁邊有一個紅插,而且這時當新建類,或編輯類時,類文件都不會編繹的,甚至有人認為此時是eclipse不能自動編繹了,查看自動編繹屬性時又是自動編繹
的,換到其他工程時又可以自動編繹,所以可能一時找不到原因,其實是.classpath文件中的一些環境變量的路徑不正確導致的,去掉或指向正確的路徑
即可