Reputation: 6789
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
Upvotes: 2
Views: 67958
Reputation: 11
make sure that your file name contain no spaces
Eg:
HelloWorld.java
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
Upvotes: 1
Reputation: 6124
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 in PATH
and figure out that zip
program is located under /usr/bin
)
Secondly if you want to compile sources from both directory you need to specify:
home/pathToFolderA/src
and home/pathToFolderB/gen-java
)To sum it up, it would be something like this to compile:
javac -d /home/pathToFolderWithResultsOfCompilation -classpath /path/to/some.jar:/path/to/another.jar home/pathToFolderA/src/*.java home/pathToFolderB/gen-java/*.java
and to run your compiled programs:
java -classpath /path/to/some.jar:/path/to/another.jar:/home/pathToFolderWithResultsOfCompilation full.name.of.your.Java
Upvotes: 5
Reputation: 138
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.
Upvotes: 0
Reputation: 206786
Working with some basic java apps on CentOS 5 linux and I have my
classpath
set to point tohome/pathToJava/bin
which containsjavac
andjava
That's wrong. The classpath is used to find *.class
files, not operating system specific executables. The bin
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.
Upvotes: 3
Reputation: 1499860
The classpath is used to find class files, not source files. (Nor is it used to find the java
and javac
binaries; those are found in your normal path.) You need to specify the files to compile explicitly:
javac /home/pathToFolderA/src/fileName.java
Obviously if you're already in /home/pathToFolderA/src
then you can just use fileName.java
because that's treated as being relative to your current directory.
Upvotes: 6