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

5

我的代码被部署为JAR文件。这个JAR包含一个目录lib,其中包含许多第三方JAR文件,这些文件是我的代码所需的。我已经通过MANIFEST.MF使用Ant将它们添加到classpath中。

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在MANIFEST.MF中将JAR的当前目录添加到classpath中?我使用manifestclasspath Ant任务将lib目录中的JAR文件添加到classpath中。


我希望这些文件与JAR文件驻留在同一个目录中。如果我是程序的用户,我更喜欢它们位于user.home的子目录中(这样它们就可以轻松地被我的备份脚本访问,而不是软件,因为软件没有备份)。或者,在应用程序安装时,由我选择位置(使用文件选择器)放置。 - Andrew Thompson
@AndrewThompson 感谢您的贡献。应用程序将作为计划任务执行,不需要任何用户干预。这更多是为了保持属性文件和JAR文件在一起,以便于部署。 - mip
1个回答

5
你尝试过将.添加为当前目录的引用吗?
   <jar jarfile="dummy.jar">
            <manifest>
                    <attribute name="Main-Class" value="com.package.Class"/>
                    <attribute name="Class-Path" value=". ${jar.class.path}"/>
            </manifest>               
    </jar>

请参考此链接,其中提到了可执行jar包找不到属性文件的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接