2012-03-02 17 views
5

Mój kod jest wdrażany jako plik JAR. Plik JAR zawiera katalog lib zawierający pewną liczbę plików JAR innych firm, których wymaga mój kod. Dodałem je do classpath, używając Ant, poprzez MANIFEST.MF.Dodawanie bieżącego katalogu do ścieżki klasy pliku JAR

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.7.0 
Created-By: 20.5-b03 (Sun Microsystems Inc.) 
Main-Class: com.package.Class 
Class-Path: ../lib/c3p0-0.9.1.2.jar ../lib/dbunit-2.4.8.jar ../lib/gua 
va-10.0.1.jar ../lib/hsqldb.jar ../lib/javax.jms.jar ../lib/log4j-1.2 
.16.jar ../lib/mockito-all-1.9.0.jar ../lib/ojdbc14.jar ../lib/slf4j- 
api-1.6.4.jar ../lib/slf4j-log4j12-1.6.4.jar ../lib/xmlunit-1.3.jar 

Istnieje również plik queries.properties który znajduje się w katalogu głównym JAR.

Istnieją dwa dodatkowe pliki właściwości, które są wymagane. Chciałbym, aby znajdowały się one w tym samym katalogu, co plik JAR i aby kod mógł je znaleźć. Uważam, że kod, aby móc zlokalizować te pliki właściwości, musi znajdować się w classpath. Dlatego muszę dodać katalog pliku JAR do classpath.

Po pierwsze, czy to jest właściwe podejście, czy powinienem użyć alternatywnego sposobu lokalizowania plików właściwości?

Jeśli jest to poprawne, w jaki sposób mogę użyć Ant do dodania bieżącego katalogu JAR do ścieżki klasy w MANIFEST.MF? Dodałem pliki JAR w katalogu lib do classpath przy użyciu zadania Ant. manifestclasspath.

+0

* „Chciałbym je do przebywania w tym samym katalogu co plik JAR” * Jeśli jestem użytkownika programu, wolałbym je za 1) W podkatalogu 'user.home' (gdzie są łatwo dostępne dla mojego skryptu zapasowego, w przeciwieństwie do oprogramowania, które nie ma kopii zapasowej). Lub .. 2) W wybranej przeze mnie lokalizacji (przy użyciu selektora plików) podczas instalacji aplikacji. –

+0

@AndrewThompson Dzięki za Twój wkład. Aplikacja zostanie wykonana jako zaplanowane zadanie i nie wymaga interwencji użytkownika. Chodzi raczej o przechowywanie plików właściwości i pliku JAR w celu ułatwienia wdrożenia. – mip

Odpowiedz

5

Czy próbowałeś dodać . jako odniesienia do bieżącego katalogu?

<jar jarfile="dummy.jar"> 
      <manifest> 
        <attribute name="Main-Class" value="com.package.Class"/> 
        <attribute name="Class-Path" value=". ${jar.class.path}"/> 
      </manifest>    
    </jar> 

Proszę zobaczyć również Executable jar won't find the properties files

+0

Dzięki. To się udało. – mip

Powiązane problemy