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.
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 *
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With