This question already has answers here:
What does a “Cannot find symbol” or “Cannot resolve symbol” error mean?
(15个答案)
4年前关闭。
我的项目目录如下所示:
Prediction.java
Predictions.java
我编译了Prediction.java-> Predictions.class。但是Predictions.java抛出错误:
我使用了de apache-tomcat中包含的servlet-api.jar,如果不使用它,则表示javax.servlet出现相同的错误
我究竟做错了什么?
希望能帮助到你
(15个答案)
4年前关闭。
我的项目目录如下所示:
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;
}
}
我编译了Prediction.java-> Predictions.class。但是Predictions.java抛出错误:
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();
我使用了de apache-tomcat中包含的servlet-api.jar,如果不使用它,则表示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
我究竟做错了什么?
最佳答案
通过在类路径中设置servlet-api.jar从classes
文件夹javac predictions\*.java
编译您的类。
设置正确的类路径后,也可以一一编译它们:
javac predictions\Prediction.java
javac predictions\Predictions.java
希望能帮助到你
10-01 18:22