2011-09-02 57 views
2

在Hudson服务器(Windows机器)上部署我的应用程序时,我遇到了调用java.exe的问题,因为我的类路径太长 - Windows在一定长度之后触发。有关缩短ant类路径的一些技巧?

classpath基本上是几百Jar文件用分号

分离假设以下的classpath会过大如果每个罐子在classpath中明确列出:

<path id="classpath.project"> 
    <fileset dir="lib" includes="**/*.jar" /> 
</path> 

我可以在蚂蚁做什么缩短我的类路径?

+0

看看这个关于使用类路径通配符的问题。 [设置多个JAR在Java类路径] [1] [1]:http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpath –

回答

4

您可以谷歌的OneJar。 如果你想自己做,然后生成一个只有清单的“空”jar文件。将包含所有需要的jar的“Class-Path:a.jar,another.jar,bla-blub.jar”行添加到清单中。 (谷歌的“清单类路径”)(可以用ant来完成) 假设所有的jar都是部署的,通常你只需要在类路径中有“空”jar文件,因为JVM现在将使用清单来查找所有其他罐子。

+0

注'-classpath'支持库的相对路径和绝对路径,但清单文件中的'Class-Path'只能使用相对路径。当你的构建工具只使用绝对路径时(如Maven),这可能会造成一些痛苦。 –

5

由于Java 6支持wildcards in the classpath。具体地说,它支持使用*指所有jar文件在指定目录(注意:*.jar!):

使用*在CLASSPATH中的意思是“在当前目录下的所有jar文件”,用lib/*意思是”目录lib/中的jar文件“。

除非你有吨的目录,这应该是足够的。但是,我不知道如何利用Ant的这个事实。