Hello
I am trying to modify one of the default files that comes with tomcat SessionExample.java, and trying to compile it but I get an error.
javac -classpath "E:\Program Files\Apache Software Foundation\Apache Tomcat 6.0.18\lib\servlet-api.jar" SessionExample.java
Gives me this error
SessionExample.java:26: package util does not exist
import util.HTMLFilter;
^
SessionExample.java:90: cannot find symbol
symbol : variable HTMLFilter
location: class SessionExample
out.println(HTMLFilter.filter(name) + " = "
^
SessionExample.java:91: cannot find symbol
symbol : variable HTMLFilter
location: class SessionExample
+ HTMLFilter.filter(value) + "");
^
3 errors
Thank you
You have to compile HTMLFilter. Use can use the -sourcepath switch. See the javac docs. Consider using some IDE like Eclipse or NetBeans
Related
I have a file structure as follows:
src/cs/example/Hello.java
src/cs/utility/HelloHelp.java
bin/cs/example/Hello.class
bin/cs/utility/HelloHelp.class
The package and import statements in Hello.java are:
package cs.example;
import cs.utility.MyMethods;
While the package statement in HelloHelp is:
package cs.utility;
I attempt to run Hello (that uses a method from HelloHelp):
java -cp src/cs/utility src/cs/example/Hello.java
src/cs/example/Hello.java:2: error: package cs.utility does not exist
import cs.utility.HelloHelp;
^
src/cs/example/Hello.java:10: error: cannot find symbol
int max = HelloHelp.borp(intOne,intTwo);
^
symbol: variable HelloHelp
location: class Hello
Any help on resolving this issue would be very useful, thank you!
In your java -cp call you are pointing to your .java files instead of your .class files in /bin.
Try changing your java command to use the class files instead. Something like the following should work:
java -cp "bin/*" cs.example.Hello
This question already has answers here:
How to compile java package structures using javac
(6 answers)
What does a "Cannot find symbol" or "Cannot resolve symbol" error mean?
(18 answers)
Closed 2 years ago.
I have been trying to compile through CMD by creating packages manually. I tried the command javac -d . Nameinfo.java and javac -d . Returndata.java, where Nameinfo contains the calculations and Returndata contains main function, and this command worked absolutely fine. Now I made 2 different packages in my "java programmes" folder i.e packx and packy, where packx contains Nameinfo and packy contains Returndata. Now, when I compile these two, Nameinfo.java got compiled but Returndata could not read/recognize the imported Nameinfo in Returndata.java.
errors:
E:\java programmes>cd packx
E:\java programmes>cd packx
E:\java programmes\packx>javac Nameinfo.java
E:\java programmes\packx>cd..
E:\java programmes>cd packy
E:\java programmes\packy>javac Returndata.java
Returndata.java:2: error: package packx does not exist
import packx.Nameinfo;
^
Returndata.java:7: error: cannot find symbol
Nameinfo data = new Nameinfo();
^
symbol: class Nameinfo
location: class Returndata
Returndata.java:7: error: cannot find symbol
Nameinfo data = new Nameinfo();
^
symbol: class Nameinfo
location: class Returndata
3 errors
if java or javac needs, say, packx.Returndata as a type to do something, it will scour a classpath and/or sourcepath for a directory named packx, and within that, Returndata.java or Returndata.class depending on the tool and path we're talking about.
So, you're in E:\java programmes\packy, and you're compiling some code that imports packx. Therefore, javac will look in the classpath for packx/Returndata.class and in the sourcepath for packx/Returndata.java and it doesn't find what you want because E:\java programmes isn't on the source path; generally they default to . (i.e. the current directory).
Stay in the E:\java programmes folder for all this work:
E:
cd "\Java programmes"
javac packx/Nameinfo.java
javac packy/Returndata.java
Or better yet, realize that manually compiling a multipackage java application is crazy. Use maven, gradle or some other build tool that takes care of all this for you :)
I need a particular JAR file, fo execute a code. I am able to run the code In eclipse by adding the JAR file to libraries.
But when I run he code from cmd prompt I get error saying unable to import javax.jms(the jar file).
C:\tibco\ems\8.5\samples\java\JNDI>javac tibjmsJNDIFT.java
tibjmsJNDIFT.java:43: error: package javax.jms does not exist
import javax.jms.*;
^
tibjmsJNDIFT.java:108: error: cannot find symbol
ConnectionFactory connectionFactory =
^
symbol: class ConnectionFactory
location: class tibjmsJNDIFT
tibjmsJNDIFT.java:109: error: cannot find symbol
(ConnectionFactory)jndiContext.lookup(factory[j]);
^
symbol: class ConnectionFactory
location: class tibjmsJNDIFT
3 errors
C:\tibco\ems\8.5\samples\java\JNDI>
You should use the "-cp" or "-classpath" option:
javac -cp ".:/path/to/jms.jar:/path/to/any-other.jar" tibjmsJNDIFT.java
On Windows OS you might have to use "semicolons" (;) instead of "colons" (:)
My project runs smoothly in Eclipse, no errors at all. I ran it through local tests (that are equal to the ones in an online mooshak contest) and all checks out. But when I sumbit it online, I get a CompileTimeError.
To try to locate the problem, I attempted to use javac in Main.java, and this happened:
javac -encoding US-ASCII Main.java
Main.java:8: error: package code does not exist
import code.*;
^
Main.java:129: error: cannot find symbol
public static void addWords(Scanner in, LibSystem system, int wordCount)
{
^
symbol: class LibSystem
location: class Main
Main.java:153: error: cannot find symbol
public static void searchWord(LibSystem system, String word) {
^
Other symbol errors follow for every reference to classes from my only package, which I fully import and the header of Main, for a total of 29 errors.
Project
src
Main.java
code (package with all my other java files)
Follow these steps :-
1.) make sure LibSystem class is in classpath.
2.)Compile java files in code folder using -d option. That will create directories with classes.
javac -d . code/*.java
3.) then compile your Main class.
javac Main.java
I have my file structure as (they are in the package assigment):
prog/
src/assignment/
bin/assignment/
lib/assignment/
The files I am compiling are in src, and are being compiled to bin. The command I type is javac -d ./bin/ -cp ./bin/:./src/ -target 1.7 ./src/assignment/*.java
I have also tried javac -d ./bin/ -cp ./bin/:./src/ -target 1.7 ./src/assignment/GoodBrain.java ./src/assignment/LameBrain.java ./src/assignment/Board.java
For some reason I cannot two class files, the error message is 'cannot find symbol' (it points to the Board class and the LameBrain class).
The error message:
javac -g -d ./bin/ -cp ./src/:. -target 1.7 src/assignment/GoodBrain.java
src/assignment/GoodBrain.java:3: error: cannot find symbol
public class GoodBrain extends LameBrain{
^
symbol: class LameBrain
src/assignment/GoodBrain.java:11: error: cannot find symbol
public double rateBoard(Board board) {
^
symbol: class Board
location: class GoodBrain
2 errors
make: *** [bin/assignment/GoodBrain.class] Error 1
It is the same error for all the commands that I type in. Please tell me if I need to provide any new information
I fixed the error, it was because I forgot to include the package statement. Very dumb mistake