Working with some basic java apps on CentOS 5 linux and I have my classpath
set to point to home/pathToJava/bin
which contains javac
and java
and I have .java
files in home/pathToFolderA/src
and home/pathToFolderB/gen-java
When I run javac
and java
in home/pathToFolderA/src
everything works perfectly
But when I run javac
from within home/pathToFolderB/gen-java
on fileName.java
I get a file not found error, specifically
javac: file Not found: fileName.java
Usage: javac <options> <source files>
Why could this be happening?
Thanks for all help
You shouldn't set your classpath to point to your JDK bin directory -- instead it should be the PATH environment variable, which serves a different purpose to classpath. (The classpath defines a list of jars and directories containing compiled Java .class code; the PATH variable defines a list of paths where the shell needs to look and locate programs to execute when they are not found in the current directory -- so if you type for instance
zip
-- it would look in all the directories defined inPATH
and figure out thatzip
program is located under/usr/bin
) Secondly if you want to compile sources from both directory you need to specify:home/pathToFolderA/src
andhome/pathToFolderB/gen-java
)To sum it up, it would be something like this to compile:
and to run your compiled programs:
That's wrong. The classpath is used to find
*.class
files, not operating system specific executables. Thebin
directory of your JDK does not belong in the classpath. Note that the classpath is also not for finding*.java
source files.When you run
javac
you need to specify the path to the source file, if it isn't in the current directory.Without a listing of the directory "gen-java" and the exact command you're typing,my guess would be that you're trying to compile a file that doesn't exist. Linux is case sensitive, so maybe that's your problem. Or the file doesn't exist.
make sure that your file name contain no spaces
Eg:
usually the errors occur when you rename the file by copy past that will cause a space between the name and the dot (this is the mistake:
HelloWorld .java
).and make sure you changed the directory to the same folder your file in
The classpath is used to find class files, not source files. (Nor is it used to find the
java
andjavac
binaries; those are found in your normal path.) You need to specify the files to compile explicitly:Obviously if you're already in
/home/pathToFolderA/src
then you can just usefileName.java
because that's treated as being relative to your current directory.