简体   繁体   中英

Compiling a java file using javac and the command line

I am trying to learn more about javac and how to use developer tools for Java using the command line.

As far as I understood, the option -classpath is needed to specify the path where javac searches for our classes and resource files, if we are not in the current directory, because usually the class path is set to our current working directory.

This is my current working directory:

/Users/user1/Desktop

And I am trying to compile a .java file which is in:

/Users/user1/Desktop/PF/

and the file is called MainClass.java .

I am trying to compile it using the following command:

javac -classpath /PF MainClass.java

But it does not seem to work, in fact I keep receiving the following:

javac: file not found: MainClass.java
Usage: javac <options> <source files>
use -help for a list of possible options

What am I doing wrong?

Classpath is for .class files, not for .java files.

javac command needs correct path to the .java file to compile it. So

javac ./PF/MainClass.java

Will create the class file in current directory.

If your MainClass.java depends on any class files to compile correctly, then you put those class/jar files in classpath.

That isn't how the classpath works. You use the classpath to point to classes that your Java file needs in order to compile. You don't use the classpath to point to the Java file itself.

Either go into the PF directory and do this:

javac MainClass.java

That will create the MainClass.class file inside the PF directory. If instead you want to create the MainClass.class file on your desktop, then from your desktop, do this:

javac PF/MainClass.java

-classpath

Specifies the path javac uses to look up classes needed to run javac or being referenced by other classes you are compiling. Overrides the default or the CLASSPATH environment variable if it is set. Directories are separated by colons. It is often useful for the directory containing the source files to be on the class path. You should always include the system classes at the end of the path.

class path is used to specify the compiled sources that need to be used in your class. For example in this code if you are accessing another class then you should specify the location of the compiled sources of the that class.

In your case if don't have any class dependency then simply remove classpath option and compile using[navigate inside folder]

javac Mainclass.java

Remove the -classpath. And if you are in the place where the java file is required (which currently you arent) you can remove that PF/ too.

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