Including all the jars in a directory within the Java classpath

前端 未结 24 3603
鱼传尺愫
鱼传尺愫 2020-11-21 04:25

Is there a way to include all the jar files within a directory in the classpath?

I\'m trying java -classpath lib/*.jar:. my.package.Program and it is no

24条回答
  •  遇见更好的自我
    2020-11-21 04:55

    Short answer: java -classpath lib/*:. my.package.Program

    Oracle provides documentation on using wildcards in classpaths here for Java 6 and here for Java 7, under the section heading Understanding class path wildcards. (As I write this, the two pages contain the same information.) Here's a summary of the highlights:

    • In general, to include all of the JARs in a given directory, you can use the wildcard * (not *.jar).

    • The wildcard only matches JARs, not class files; to get all classes in a directory, just end the classpath entry at the directory name.

    • The above two options can be combined to include all JAR and class files in a directory, and the usual classpath precedence rules apply. E.g. -cp /classes;/jars/*

    • The wildcard will not search for JARs in subdirectories.

    • The above bullet points are true if you use the CLASSPATH system property or the -cp or -classpath command line flags. However, if you use the Class-Path JAR manifest header (as you might do with an ant build file), wildcards will not be honored.

    Yes, my first link is the same one provided in the top-scoring answer (which I have no hope of overtaking), but that answer doesn't provide much explanation beyond the link. Since that sort of behavior is discouraged on Stack Overflow these days, I thought I'd expand on it.

提交回复
热议问题