2012-03-02 35 views
5

Mi código se está implementando como un archivo JAR. El JAR contiene un directorio lib que contiene un número de JAR de terceros que mi código requiere. Los he agregado al classpath, usando Ant, a través del MANIFEST.MF.Agregar el directorio actual al classpath de un archivo 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 

También hay un archivo de queries.properties que está en la raíz de la jarra.

Hay dos archivos de propiedades adicionales que se requieren. Me gustaría que estos residan en el mismo directorio que el archivo JAR y que el código pueda ubicarlos. Creo que para que el código pueda ubicar estos archivos de propiedades, deben estar en el classpath. Por lo tanto, necesito agregar el directorio del archivo JAR al classpath.

En primer lugar, ¿este es el enfoque correcto de debería usar un medio alternativo de localizar los archivos de propiedades?

Si esto es correcto, ¿cómo utilizo Ant para agregar el directorio actual del JAR al classpath en MANIFEST.MF? Agregué los JAR en el directorio lib al classpath usando la tarea Ant manifestclasspath.

+0

* "Me gustaría que éstos residan en el mismo directorio que el archivo JAR" * Si soy el usuario del programa, prefiero que sean 1) En un subdirectorio de 'user.home' (donde son fácilmente accesibles para mi script de respaldo, a diferencia del software, del que no se ha hecho copia de seguridad). O .. 2) En un lugar elegido por mí (utilizando un selector de archivos) en la instalación de la aplicación. –

+0

@AndrewThompson Gracias por su contribución. La aplicación se ejecutará como una tarea programada y no requiere la intervención del usuario. Se trata más bien de mantener juntos los archivos de propiedades y el archivo JAR para ayudar a la implementación. – mip

Respuesta

5

¿Ha intentado agregar el . como referencia al directorio actual?

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

Por favor, vea también Executable jar won't find the properties files

+0

Gracias. Eso funciono. – mip

Cuestiones relacionadas