简体   繁体   中英

Compiling from the command line

I'm trying to understand how works the option -classpath when compiling from command line.

I try from parent of mydirectory :

javac -cp mydirectory/subdir Hello.java

But compiler says:

javac: no sources files

How does -cp ( -classpath ) work?? What am I doing wrong?

If I make it from subdir directory:

javac Hello.java

then compiles properly.

javac TestProgram1.java TestProgram2.java TestProgram3.java

You can use a wildcard to compile all the files in a folder, like this:

javac *.java

If you need to compile a lot of files at the same time but don't want to use a wildcard (perhaps you want to compile a large number of files but not all the files in a folder), you can create an argument file, which lists the files to compile. In the argument file, you can type as many filenames as you want, using spaces or line breaks to separate them. Here's an argument file named TestPrograms that lists three files to compile:

TestProgram1.java
TestProgram2.java
TestProgram3.java

You can compile all the programs in this file by using an @ character, followed by the name of the argument file on the javac command line, like this:

javac @TestPrograms

-cp and -classpath

Specifies where to find user class files. Use this option if your program makes use of class files that you've stored in a separate folder.

The files you are compiling must be defined directly

For example, if you are in the parent folder:

javac subdir/Hello.java

would be needed to compile.

The classpath allows finding .class files that are needed to compile things defined as above.

For example, if in the code you had a reference to the class "Birds" and that class was in a jar named "animals.jar" in the current folder, which was the parent of where the java file was, you would need this:

javac -cp animals.jar subdir/Hello.java
javac XXX.java

Command used to compile java class , where as -classpath flag is available with java command.

we run java program by using

java XXX.class

here to start with main() function, JVM should know where the class file is. so to specify path of class we use classpath flag

Classpath link to get more details.

some example for runing java program are

java -classpath .;yourJarFile.jar your.MainClass

 java -classpath path_till_classfile/HelloWorld

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM