gpt4 book ai didi

Javac “cannot find symbol” 为什么?

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:14 24 4
gpt4 key购买 nike

我的项目目录如下所示:

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

预测.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; }

}

预测.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();

我使用了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

我做错了什么?

最佳答案

classes 文件夹 javac Predictions\*.java 编译您的类,并在类路径中设置 servlet-api.jar。

设置正确的类路径后也可以一一编译它们:

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

希望对你有帮助

关于Javac “cannot find symbol” 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38929142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com