2013-10-29 48 views
3

未果後谷歌搜索小時的使用環境變量,我問你:蝕:爲外部JAR位置

現狀:

我的Eclipse項目採用「nedded.jar」,所以我把它添加到構建路徑。沒問題。

  • C:/dev/development/my_needed/nedded.jar

但 「nedded.jar」 的位置是相對於環境變量DEVELOPMENT(= C是:/ dev /開發/)因此可能會改變。所以,我需要引用的庫路徑是:

  • %DEVELOPMENT%/ my_needed/nedded.jar

我找不到語法來實現這一目標。想法?

編輯:

也許我沒有讓自己很清楚:該項目由MSVisual工作室(C++)和Eclipse(Java)的開發。兩者都從控制檯啓動。先前執行的腳本設置了3個主要變量:開發,運行時間,來源到某些變化的路徑。

如果我從這個shell啓動Eclipse,我的外部庫的路徑應該由%DEVELOPMENT%\ my_needed \ nedded.jar定義。

我找到了一箇中途解決方案(某處):添加了一個新文件夾 - >高級 - >鏈接到備用位置(鏈接文件夾)。

這會增加你在你的.project一個條目,這也是我得到的,當我結帳我的項目:

<linkedResources> 
    <link> 
    <name>lib/RXTXcomm.jar</name> 
    <type>1</type> 
    <locationURI>PARENT-4-PROJECT_LOC/Development/rxtx/RXTXcomm.jar</locationURI> 
    </link> 
</linkedResources> 

尼斯到目前爲止,但它仍然不取決於%DEVELOPMENT%。我需要的是: %DEVELOPMENT%/ rxtx/RXTXcomm.jar

希望這個現在更清晰。

+0

你看過http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Fconcepts%2Fcpathvars.htm –

+0

是的,沒有幫助,因爲我沒有希望引用Eclipse的內部環境變量。 「$ {env_var}」只能在運行/調試配置中使用。在ant腳本中,我可以引用「 我想將項目簽出到文件系統中的任何位置,設置環境變量,啓動Eclipse,導入項目和瞧:所有外部庫自動發現! – LalaBox

+0

有用的方法:[Post_1](http://stackoverflow.com/questions/1427048/how-can-i-add-build-path-items-to-eclipse-3-5-using-relative -paths),[Post_2](http://stackoverflow.com/questions/7742015/how-do-i-use-environment-variables-in-an-eclipse-classpath-file) – LalaBox

回答

-1

我想你應該能夠使用

${workspace_loc} 

${resource_loc/<a name of your project/plug-in>/folder...} 
+0

這不起作用(Eclipse開普勒,4.3) –

3

你應該聲明一個變量(Java構建路徑 - >添加變量... - >配置變量... - > New)在每個系統上設置更改路徑(例如FOO_BAR_HOME)。

然後你就可以將變量添加到庫部分和編輯它指向你的庫,如:

%FOO_BAR_HOME%/lib/foobar.jar

看看對於使用現有的變量。

或者,您可以將庫放置在項目中(例如子文件夾'lib')。如果你從這個位置添加庫('添加罐子'...'不添加外部罐子...'),它將通過相對路徑添加。

+1

+1幫助我,這裏有一些東西可以添加(對於Eclipse 3.6.2,至少)......添加FOO_BAR_HOME VARIABLE後,您可以編輯項目的Java Build Path,在Libraries選項卡中,點擊「添加變量」,選擇您的FOO_BAR_HOME變量,然後點擊「擴展」按鈕。然後,導航到您的jar文件並選擇它。你的.classpath文件最終會有一個相對於你的FOO_BAR_HOME變量的路徑。 – kc2001

0

我正在尋找一個答案,以及與螞蟻。似乎你可以參考windows環境變量像這樣

<property environment="env"/> 

提供所有環境變量作爲前綴爲「env。」的Ant屬性。例如,CLASSPATH可以在Ant中作爲$ {env.CLASSPATH}訪問。