找不到符号,java,类加载器
cannot find symbol, java, classloader
目前正在做一个 typestate 项目,我在导入列表时遇到问题 class。当我尝试编译 class 时,它在命令行中抛出错误,提示找不到符号并指向列表符号。我想知道你是如何解决这个问题的。它似乎适用于 String 和 Integer 但不适用于 List。
java 文件是通过另一个翻译 .scr 文件的程序自动创建的。在 scr 文件中,我使用以下行:
type <java> "java.lang.List" from "rt.jar" as List;
Java 文件:
package demos.Redis;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.ServerSocket;
import java.net.UnknownHostException;
public class ClientRole {
private BufferedReader socketServerIn = null;
private PrintWriter socketServerOut = null;
public ClientRole(){
ServerSocket serverServer = null;
try {
serverServer = new ServerSocket(20000);
}
catch(IOException e) {
System.out.println("Unable to listen on ports");
System.exit(+1);
}
Socket socketServer = null;
try {
System.out.println("Accepting...");
socketServer = serverServer.accept();
System.out.println("Server accepted");
}
catch(IOException e) {
System.out.println("Accept failed");
System.exit(+1);
}
try {
socketServerIn = new BufferedReader(new InputStreamReader(socketServer.getInputStream()));
socketServerOut = new PrintWriter(socketServer.getOutputStream(), true);
}
catch(IOException e) {
System.out.println("Read failed");
System.exit(+1);
}
}
public void send_WATCHListToServer(List payload) { HERE IS WHERE IT BREAKS!!
this.socketServerOut.println(payload);
}
public Choice1 send_Choice1LabelToServer(String payload) {
this.socketServerOut.println(payload);
int intLabelChoice1 = Integer.parseInt(payload);
switch(intLabelChoice1){
case 1:
return new Choice1(Choice1.GET);
case 2:
return new Choice1(Choice1.WATCH);
case 3:
default:
return new Choice1(Choice1.MULTI);
}
}
public void send_GETStringToServer(String payload) {
this.socketServerOut.println(payload);
}
public String receive_GET_respStringFromServer() {
String line = "";
try {
line = this.socketServerIn.readLine();
}
catch(IOException e) {
System.out.println("Input/Outpur error.");
System.exit(+1);
}
return line;
}
public void send_MULTIStringToServer(String payload) {
this.socketServerOut.println(payload);
}
public Choice2 send_Choice2LabelToServer(String payload) {
this.socketServerOut.println(payload);
int intLabelChoice2 = Integer.parseInt(payload);
switch(intLabelChoice2){
case 1:
return new Choice2(Choice2.SET);
case 2:
return new Choice2(Choice2.DISCARD);
case 3:
default:
return new Choice2(Choice2.EXEC);
}
}
public void send_SETStringToServer(String payload) {
this.socketServerOut.println(payload);
}
public void send_DISCARDStringToServer(String payload) {
this.socketServerOut.println(payload);
}
public void send_EXECStringToServer(String payload) {
this.socketServerOut.println(payload);
}
public Choice3 receive_Choice3LabelFromServer() {
String stringLabelChoice3 = "";
try {
stringLabelChoice3 = this.socketServerIn.readLine();
}
catch(IOException e) {
System.out.println("Input/Outpur error, unable to get label");
System.exit(+1);
}
int intLabelChoice3 = Integer.parseInt(stringLabelChoice3);
switch(intLabelChoice3){
case 1:
return new Choice3(Choice3.EXEC_OK);
case 2:
default:
return new Choice3(Choice3.EXEC_FAIL);
}
}
public String receive_EXEC_okStringFromServer() {
String line = "";
try {
line = this.socketServerIn.readLine();
}
catch(IOException e) {
System.out.println("Input/Outpur error.");
System.exit(+1);
}
return line;
}
public String receive_EXEC_failStringFromServer() {
String line = "";
try {
line = this.socketServerIn.readLine();
}
catch(IOException e) {
System.out.println("Input/Outpur error.");
System.exit(+1);
}
return line;
}
}
命令行
您正在使用 List 界面,但您没有导入它,它说它找不到符号 java.lang.List 因为它试图在默认 [=14] 中搜索这个 class =] 包,添加 import java.util.List
并且你不会有问题
您的 Java 文件缺少 java.util.List 的导入语句,这就是编译失败的原因。
与 String 和 Integer 不同,List 不在 java.lang 包中。您需要导入 java.util.List,而不是 java.lang.List.
如果我对您的情况的理解正确,您的其他程序正在生成导入语句并尝试为 java.lang.List 添加一个导入,它实际上并不存在。有趣的是,您的代码中没有 java.lang.List 的导入语句。我不知道这是你的其他程序或功能中的错误!但是,如果您将 .scr 文件中的行替换为 type <java> "java.util.List" from "rt.jar" as List;
,您的问题很可能会消失
目前正在做一个 typestate 项目,我在导入列表时遇到问题 class。当我尝试编译 class 时,它在命令行中抛出错误,提示找不到符号并指向列表符号。我想知道你是如何解决这个问题的。它似乎适用于 String 和 Integer 但不适用于 List。
java 文件是通过另一个翻译 .scr 文件的程序自动创建的。在 scr 文件中,我使用以下行:
type <java> "java.lang.List" from "rt.jar" as List;
Java 文件:
package demos.Redis;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.ServerSocket;
import java.net.UnknownHostException;
public class ClientRole {
private BufferedReader socketServerIn = null;
private PrintWriter socketServerOut = null;
public ClientRole(){
ServerSocket serverServer = null;
try {
serverServer = new ServerSocket(20000);
}
catch(IOException e) {
System.out.println("Unable to listen on ports");
System.exit(+1);
}
Socket socketServer = null;
try {
System.out.println("Accepting...");
socketServer = serverServer.accept();
System.out.println("Server accepted");
}
catch(IOException e) {
System.out.println("Accept failed");
System.exit(+1);
}
try {
socketServerIn = new BufferedReader(new InputStreamReader(socketServer.getInputStream()));
socketServerOut = new PrintWriter(socketServer.getOutputStream(), true);
}
catch(IOException e) {
System.out.println("Read failed");
System.exit(+1);
}
}
public void send_WATCHListToServer(List payload) { HERE IS WHERE IT BREAKS!!
this.socketServerOut.println(payload);
}
public Choice1 send_Choice1LabelToServer(String payload) {
this.socketServerOut.println(payload);
int intLabelChoice1 = Integer.parseInt(payload);
switch(intLabelChoice1){
case 1:
return new Choice1(Choice1.GET);
case 2:
return new Choice1(Choice1.WATCH);
case 3:
default:
return new Choice1(Choice1.MULTI);
}
}
public void send_GETStringToServer(String payload) {
this.socketServerOut.println(payload);
}
public String receive_GET_respStringFromServer() {
String line = "";
try {
line = this.socketServerIn.readLine();
}
catch(IOException e) {
System.out.println("Input/Outpur error.");
System.exit(+1);
}
return line;
}
public void send_MULTIStringToServer(String payload) {
this.socketServerOut.println(payload);
}
public Choice2 send_Choice2LabelToServer(String payload) {
this.socketServerOut.println(payload);
int intLabelChoice2 = Integer.parseInt(payload);
switch(intLabelChoice2){
case 1:
return new Choice2(Choice2.SET);
case 2:
return new Choice2(Choice2.DISCARD);
case 3:
default:
return new Choice2(Choice2.EXEC);
}
}
public void send_SETStringToServer(String payload) {
this.socketServerOut.println(payload);
}
public void send_DISCARDStringToServer(String payload) {
this.socketServerOut.println(payload);
}
public void send_EXECStringToServer(String payload) {
this.socketServerOut.println(payload);
}
public Choice3 receive_Choice3LabelFromServer() {
String stringLabelChoice3 = "";
try {
stringLabelChoice3 = this.socketServerIn.readLine();
}
catch(IOException e) {
System.out.println("Input/Outpur error, unable to get label");
System.exit(+1);
}
int intLabelChoice3 = Integer.parseInt(stringLabelChoice3);
switch(intLabelChoice3){
case 1:
return new Choice3(Choice3.EXEC_OK);
case 2:
default:
return new Choice3(Choice3.EXEC_FAIL);
}
}
public String receive_EXEC_okStringFromServer() {
String line = "";
try {
line = this.socketServerIn.readLine();
}
catch(IOException e) {
System.out.println("Input/Outpur error.");
System.exit(+1);
}
return line;
}
public String receive_EXEC_failStringFromServer() {
String line = "";
try {
line = this.socketServerIn.readLine();
}
catch(IOException e) {
System.out.println("Input/Outpur error.");
System.exit(+1);
}
return line;
}
}
命令行
您正在使用 List 界面,但您没有导入它,它说它找不到符号 java.lang.List 因为它试图在默认 [=14] 中搜索这个 class =] 包,添加 import java.util.List
并且你不会有问题
您的 Java 文件缺少 java.util.List 的导入语句,这就是编译失败的原因。
与 String 和 Integer 不同,List 不在 java.lang 包中。您需要导入 java.util.List,而不是 java.lang.List.
如果我对您的情况的理解正确,您的其他程序正在生成导入语句并尝试为 java.lang.List 添加一个导入,它实际上并不存在。有趣的是,您的代码中没有 java.lang.List 的导入语句。我不知道这是你的其他程序或功能中的错误!但是,如果您将 .scr 文件中的行替换为 type <java> "java.util.List" from "rt.jar" as List;