找不到符号,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;

,您的问题很可能会消失