Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javac classpath option with multiple jar files in current directory causing error

Tags:

java

javac

Environment: Windows 7, Java 6.

Trying to compile a .java file with -cp option. The file uses a single jar file that's in the current directory ALONG WITH some other jar files in the current directory.

javac -cp ./*.jar MyFile.java

doesn't work.

javac -cp ./* MyFile.java 

doesn't work

javac -cp ./MyJar.jar MyFile.java

works

First two cases, I get a invalid flag error. Can someone explain this behavior?

And I checked if it is spaces issue, there are no spaces anywhere in my full file paths.

like image 983
Brian Avatar asked Jul 29 '14 21:07

Brian


1 Answers

The quoted sources for the two links provided in the comments as well as in the "This question may already have an answer here:", do not completely explain the observed behavior.

javac -cp ./*.jar MyFile.java

Won't work, because the wildcard * usage in this context differs from normal usage. This can be understood from the documentation. * always represents full file(s) and not partial file names.

javac -cp ./* MyFile.java

Should have worked. Apparently using double quotes and/or a semi-colon in windows. works:

javac -cp "./*" MyFile.java

javac -cp ./*; MyFile.java

javac -cp "./*;" MyFile.java

javac -cp *; MyFile.java

javac -cp "*" MyFile.java

javac -cp "*;" MyFile.java

Nowhere in the documention is this important fact mentioned afaik.

So I guess ON WINDOWS 7 64 bit, with java 1.6.0_75 EITHER USE DOUBLE QUOTES OR ALWAYS A SEMI-COLON WHEN USING WILDCARD *

like image 108
Brian Avatar answered Oct 21 '22 04:10

Brian