问题
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.
回答1:
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 *
回答2:
use backslash in windows?
try
javac -cp .\* MyFile.java
also note Broken wildcard expansion for Java7 commandline on Windows(7?)
来源:https://stackoverflow.com/questions/25025018/javac-classpath-option-with-multiple-jar-files-in-current-directory-causing-erro