0

My project directory looks like this:

predictions
--> WEB-INF
    --> classes
        --> predictions 
            --> Predictions.java, 
                Prediction.java, 
                Prediction.class 

Prediction.java

package predictions;

import java.io.Serializable;

public class Prediction  implements Serializable {

    private static final long serialVersionUID = 1L;
    private String who;
    private String what;

    public Prediction(){}
    public String getWho() { return who; }
    public void setWho( String who ) { this.who = who; }
    public String getWhat() { return what; }
    public void setWhat( String what ) { this.what = what; }

}

Predictions.java

package predictions;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.beans.XMLEncoder; // simple and effective
import javax.servlet.ServletContext;

public class Predictions {
    private int n = 32;
    private Prediction[ ] predictions;
    private ServletContext sctx;

    public Predictions() { }

    // The ServletContext is required to read the data from
    // a text file packaged inside the WAR file
    public void setServletContext(ServletContext sctx) {
    this.sctx = sctx;
    }
    public ServletContext getServletContext() { return this.sctx; }

    // getPredictions returns an XML representation of
    // the Predictions array
    public void setPredictions(String ps) { } // no-op
    public String getPredictions() {
    // Has the ServletContext been set?
    if (getServletContext() == null) 
        return null;      

    // Have the data been read already?
    if (predictions == null) 
        populate(); 

    // Convert the Predictions array into an XML document
    return toXML();
    }

    //** utilities
    private void populate() {
    String filename = "/WEB-INF/data/predictions.db";
    InputStream in = sctx.getResourceAsStream(filename);

    // Read the data into the array of Predictions. 
    if (in != null) {
        try {
        InputStreamReader isr = new InputStreamReader(in);
        BufferedReader reader = new BufferedReader(isr);

        predictions = new Prediction[n];
        int i = 0;
        String record = null;
        while ((record = reader.readLine()) != null) {
            String[] parts = record.split("!");
            Prediction p = new Prediction();
            p.setWho(parts[0]);
            p.setWhat(parts[1]);

            predictions[i++] = p;
        }
        }
        catch (IOException e) { }
    }
    }

    private String toXML() {
    String xml = null;
    try {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        XMLEncoder encoder = new XMLEncoder(out);
        encoder.writeObject(predictions); // serialize to XML
        encoder.close();
        xml = out.toString(); // stringify
    }
    catch(Exception e) { }
    return xml;
    }
}

I compiled the Prediction.java --> Predictions.class. But Predictions.java throws error:

symbol:   class Prediction
  location: class Predictions
Predictions.java:52: error: cannot find symbol
                predictions = new Prediction[n];
                                  ^
  symbol:   class Prediction
  location: class Predictions
Predictions.java:57: error: cannot find symbol
                    Prediction p = new Prediction();

I used the servlet-api.jar included in de apache-tomcat, if I do not use, it indicates the same error for javax.servlet

javac -classpath C:\apache-tomcat-9.0.0.M8\webapps\predictions\WEB-INF\classes\predictions;C:\apache-tomcat-9.0.0.M8\lib\servlet-api.jar Predictions.java

What am I doing wrong?

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
Angel Gaona
  • 9
  • 1
  • 2

1 Answers1

-1

Compile your classes from classes folder javac predictions\*.java with setting servlet-api.jar in class path.

You can compile them one by one also after setting correct class-path:

javac predictions\Prediction.java
javac predictions\Predictions.java

Hope it helps

Sanjeev
  • 9,876
  • 2
  • 22
  • 33