7

I'd like to know if there is a maximum number of files allowed per jar, after which you can have classpath issues like classes not taken into account?

plus-
  • 45,453
  • 15
  • 60
  • 73
  • Is this similar to your question? http://stackoverflow.com/questions/3057841/too-long-line-in-manifest-file-while-trying-to-create-jar – Chetter Hummin Mar 08 '12 at 10:39
  • no your link is related to classpath lenght – plus- Mar 08 '12 at 10:40
  • I suspect its not a good idea to have so many files its something you need to be worrying about. – Peter Lawrey Mar 08 '12 at 10:53
  • On a related note, the number of JAR files on the classpath can also become an issue. I've worked on a project that had to implement a custom classloader because the number of JAR files included from subprojects became too big. – Michael Borgwardt Mar 08 '12 at 10:56
  • interesting, @MichaelBorgwardt how many jar files was the max? – plus- Mar 08 '12 at 11:28
  • @xsace: The problem was with the length of the resulting command line in the launch script, so it depended on the OS, the path and the individual filenames. – Michael Borgwardt Mar 08 '12 at 11:37

2 Answers2

12

The jar format is just a rebranded zip format, so it inherits the limitations of that format.

The original zip format has a limit of 65535 entries, so in total in Java 6 and earlier, you can have at most that many classes or other files, combined. Many tools also include directories as entires, and this reduces the entires available for classes and other files.

In java 7, zip64 is supported, with a much higher limit.

I suspect the failure mode, however, won't be randomly missing files, but failure at jar generation time.

BeeOnRope
  • 60,350
  • 16
  • 207
  • 386
4

A .jar file is really just a .zip file with a special manifest. So the limits are the same as for .zip files

  • Up to Java 6, normal zip files are supported, with a maximum of 4gb size and 65535 files
  • From Java 7 onwards, zip64 format is supported with something like 16 exabyte capacity. this is effectively unlimited for normal use with current hardware (it's about the size of all the content on the internet)
mikera
  • 105,238
  • 25
  • 256
  • 415