最近碰到一个问题:一个Java应用中(非web)众多的jar在windows2000下面下载启动失败。仔细查看了一下,批处理bat自动把所有的jar都加入到环境变量中,由于jar太多,导致命令行过长,系统不错,“不能加入”。
查文档得知jar/META-INF下面的mainifet.mf可以指令jar需要引用的包,比如:
Class-Path: a.jar b/c.jar
实测发现加上两三个可以正常工作,多了以后就实效。换行,前面加一个空格还是不行。试验N久,放弃。
Class-Path: a.jar
b.jar
c.jar
多亏了偶一个同事契而不舍,终于发现java在解析的时候仅仅把上行末尾的回车和下行开头的空格去掉。所以,上面的格式中如果a.jar和b.jar后面直接跟回车,系统会认为是j.jar.b.jar.c.jar。 解决方法就是在每行后面加个空格。够弱智吧?
这个文件有每行76字符限制,不能超长。这些规定真是奇怪,居然能遗传到java5里面,希望野马能改正。