ClassLoader无法识别程序化jar文件

时间:2014-07-18 18:25:46

标签: jar zip classloader

我有一个程序可以创建java源代码文件,编译它们以创建类文件,并使用java.utils.jar将类文件“jars up”到jar中。当生成的jar放在另一个应用程序的lib目录中时,应该识别这些类。除了创建的类文件未被识别。所以我使用WinZip压缩相同的类文件,将“zip”重命名为“jar”,将新jar放在lib目录中,文件识别正常。使用WinZip查看第一个(以编程方式生成的)jar和WinZip创建的jar,它们看起来完全相同。相同的路径,相同的原始大小,相同的压缩大小。还尝试通过java.utils.zip创建一个zip并重命名它。同样的问题。有谁知道为什么Java类加载器无法识别程序化zip / jar文件?

1 个答案:

答案 0 :(得分:0)

解决。也许这会有助于其他人。 ZipEntry(和JarEntry)的参数必须使用正斜杠(" /")作为名称分隔符,以便ClassLoader正确识别包含的文件。特别是,其他分隔符,例如File.getAbsolutePath()返回的分隔符,虽然看起来很乐意被java.utils.jar和WinZip接受,但ClassLoader将无法识别它们。