将当前目录添加到JAR文件的类路径

问题描述:

我的代码正在部署为JAR文件。 JAR包含一个目录lib,其中包含我的代码需要的许多第三方JAR。我已经使用Ant将这些添加到classpath,通过MANIFEST.MF将当前目录添加到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 

还有一个queries.properties文件是在JAR的根。

还有两个属性文件是必需的。我希望这些位于与JAR文件相同的目录中,并且代码能够找到它们。我相信代码能够找到这些属性文件,他们需要在classpath。因此我需要将JAR文件的目录添加到classpath

首先,这是我应该使用替代方法来定位属性文件的正确方法吗?

如果这是正确的,我该如何使用Ant将JAR的当前目录添加到MANIFEST.MF的类路径中?我使用manifestclasspath Ant任务将lib目录中的JAR添加到classpath

+0

*“我想这些驻留在同一目录中的JAR文件” *如果我的程序的用户,我宁愿他们是1 )在'user.home'的子目录下(我的备份脚本可以很容易地访问它们,而不是备份的软件)。或者.. 2)在我选择的位置(使用文件选择器)安装应用程序。 – 2012-03-02 12:32:23

+0

@AndrewThompson感谢您的贡献。应用程序将作为计划任务执行,不需要任何用户干预。更多的情况是将属性文件和JAR文件放在一起以帮助部署。 – mip 2012-03-02 12:54:45

您是否尝试过将.作为参考添加到当前目录?

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

另请参阅Executable jar won't find the properties files

+0

谢谢。这工作。 – mip 2012-03-02 12:51:47