javac: not a directory: src\com\example\web\BeerSelect.java - java

I am on chapter 3 of Headfirst Servlets and JSP.
This is my input to windows 7 command line:
D:\Workspaces\ServletsJSP\MyProjects\beerV1>javac -classpath
C:\Tomcat\tomcat\lib\servlet-api.jar;classes;. -d
src\com\example\web\BeerSelect.java
This is the error message:
javac: not a directory: src\com\example\web\BeerSelect.java
Usage: javac <options> <source files>
use -help for a list of possible options
I have BeerSelect.java in this directory: D:\Workspaces\ServletsJSP\MyProjects\beerV1\src\com\example\web

The -d flag is used to specify which directory to output to. You seem to have omitted it's argument, so it thinks you want to output into a directory called src\com\example\web\BeerSelect.java, which of course is not a directory.

You haven't specified the directory of the -d flag. This flag is used to specify where the class file should be put. You probably want to change your command to something like this:
D:\Workspaces\ServletsJSP\MyProjects\beerV1>javac -classpath C:\Tomcat\tomcat\lib\servlet-api.jar;classes;. -d bin src\com\example\web\BeerSelect.java
Assuming bin is where you want your class files.

Related

Linux equivalent of including the classpath during compilation

I'm following a guide that only includes compilation instructions on windows. How would one run this build.bat file on Linux?
The batch file looks like this:
#echo off
#echo Compiling...
javac -classpath ..\..\lib\OneWireAPI.jar;%classpath% -d . .\src\*.java
And when I run the javac command on Linux, it fails:
javac -classpath ../../lib/OneWireAPI.jar;%classpath% -d . ./src/ReadTemp.java
The output is:
javac: no source files
What is the correct way to do this?
On Linux, you have to use : (colon) in place of ; (semicolon) as the path separator in Java options.
Also, if you have a classpath variable, in most common Linux shells it is referenced by $classpath rather than by %classpath%
javac -classpath ../../lib/OneWireAPI.jar:$classpath -d . ./src/ReadTemp.java
You have two items that did not get translated correctly from Windows CMD to Unix:
Path separator ; should be :.
Environment variables should be changed from %classpath% to $CLASSPATH format. Note that pretty much everything is case-sensitive in Linux, including environment variable names, and the Java path is traditionally all-caps.
Try
javac -classpath ../../lib/OneWireAPI.jar:$CLASSPATH -d . ./src/ReadTemp.java

Running Javac Command with classpath on linux

I have a folder Called TutorialFolder. Inside this, i have tutorial_class folder and WordCount.java file.
When I run wordcount program, it is giving below error.
hduser#ubuntu:~/Desktop/TutorialFolder$ javac -classpath ${HADOOP_CLASSPATH}-d '/home/hduser/Desktop/TutorialFolder/tutorial_class' '/home/hduser/Desktop/TutorialFolder/WordCount.java'
javac: invalid flag: /home/hduser/Desktop/TutorialFolder/tutorial_class
Usage: javac <options> <source files>
use -help for a list of possible options
The problem here is with the variable ${HADOOP_CLASSPATH} which is not set or empty. Thus the command is interpreted as,
javac -classpath -d /home/hduser/Desktop/TutorialFolder/tutorial_class /home/hduser/Desktop/TutorialFolder/WordCount.java
Fix the $HADOOP_CLASSPATH variable, the command should work.
Or, Try with hadoop classpath command
javac -classpath `hadoop classpath` -d /home/hduser/Desktop/TutorialFolder/tutorial_class /home/hduser/Desktop/TutorialFolder/WordCount.java

Compiling Java from Command Line

I'm following this tutorial on how to build an Android Plugin for Unity
I'm currently at the part where the author tells me to do the following in command line:
1.> javac CompassActivity.java -classpath C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar
-bootclasspath C:\android-sdk-windows\platforms\android-8\android.jar -d .
2.> javap -s com.yourcompany.yourgamename.CompassActivity
3.> jar cvfM ../Compass.jar com/
However when I type the following line:
javac CompassActivity.java -classpath C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar
I get the following message:
javac: invalid flags: (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar
usage: javac <options> <source files>
use -help for a list of possible options
So I've tried retyping the line putting my path of the file in angled brackets, placing a dot in between classpath and the start of my file location, but I keep getting the same issue.
Am I using classpath wrong?
If so, what is the correct way I should be doing it?
I should add that the console does point to the correct folder location. That was the first thing I've checked.
There are spaces in the path to classes.jar, you must enclose it using ", or shell will consider it as three distinct parameters (C:\Program, Files and (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar"):
javac CompassActivity.java -classpath "C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar"
You must try the command like:
usage: javac <options> <source files>
javac -classpath "C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar" CompassActivity.java
First Check your System is 32-bit or 64-bit
check it out full steps for Config and run:http://introcs.cs.princeton.edu/java/15inout/windows-cmd.html
USe
javac -cp filepath
or you also try to set the classpath first by command
set classpath="filepath"
Then u can try with a command
java filepath

"error:cannot acces com.hello.LibC","Class file for com.hello.LibC not Found"

I am new to Android.I use this link to run the NDK Project.
I follow all these steps from the given link.However during compilation in the command prompt it shows error like:
$ javah com.hello.LibC
error: cannot access com.hello.LibC
class file for com.hello.LibC not found
javadoc: error - Class com.hello.LibC not found.
Error: No classes were specified on the command line. Try -help.
please help me.
Thanks in Advance.
you need to specify the classpath using -classpath PATH option when running javah inside bin directory of your project:
$ javah -classpath classes/ com.hello.LibC
also you can specify the output directory using option -d PATH
$ javah -d ../jni -classpath classes/ com.hello.LibC

javac no source files found

I have the .java file on the current working directory but javac reports:
javac: no source files
Usage: javac <options> <source files>
use -help for a list of possible options
I'm working on ubuntu.
From your comment above, it looks like you tried:
javac -cp .;lib.jar a.java on your Ubuntu system. The CLASSPATH separator is : on Unix systems and ; on Windows.
Ubuntu considered the command up to the ;, java -cp . and thus gave the message.
javac -cp .:lib.jar a.java should compile fine.
For anyone who is using powersehll on windows use CLASSPATH separator : instead of ;
I tried a similar thing and found that you need to mention the absolute path when you are using the
-cp and -d option with javac like this
javac -cp 'ur location of jars & files'; -d 'location to add your classes to' 'absolute path of file'
eg:
javac -cp C:\home\lib\mywork; -d c:\home\classes c:\home\files*.java
for javac, there are options and arguments
arg: it takes argument as path of source file
options: we require for basic compilation
-sourcepath: the path of dependent source files
-d: directory path of output classes
javac -sourcepath './src' -d './bin' -verbose './src/App.java'

Categories

Resources