当前位置: 首页 > 面试题库 >

找不到符号,Java,类加载器

楚嘉纳
2023-03-14
问题内容

当前正在做一个typestate项目,我在导入List类时遇到问题。当我尝试编译该类时,它将在命令行中引发错误,提示找不到符号,并指向列表符号。我想知道您如何解决此问题。它似乎适用于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;
    }
   }

命令行


问题答案:

您的Java文件缺少java.util.List的import语句,这就是为什么它无法编译的原因。

与String和Integer不同,List不在java.lang包中。您需要导入java.util.List,而不是java.lang.List。

如果我正确地理解了您的情况,则您的其他程序正在生成import语句,并尝试为java.lang.List添加一个导入,该导入实际上并不存在。有趣的是,您的代码中没有java.lang.List的import语句。我不知道这是否是您其他程序或功能中的错误!但是,如果将.scr文件中的行替换为type <java> "java.util.List" from "rt.jar" as List;



 类似资料:
  • 问题内容: 如果这是一个怪异的问题,我感到很抱歉,但是我刚刚开始OOP,并遇到了一个我应该制作的简单菜单驱动数学程序。我清除了编译器给我的所有错误,但是现在它给了我大约14个新错误,其中大多数被描述为“找不到符号”。这是我的代码: 这是新的编译器输出: 问题答案: 您从未在方法的主体中定义变量。尝试在方法中添加。简单地定义的变量并 没有 放弃对它的访问。如果要避免多次创建实例,可以执行以下操作 然

  • 问题内容: 我有一个奇怪的错误。我在同一包中有2个类,但它们彼此找不到。根据我的记忆,只要这些类位于同一包中,它们就应该能够调用彼此的方法。 我的代码与此类似: 在A.java中: 在B.java中: 这给了我一个错误。 这两个类都依赖于某些文件,但是我已经包括了这些jar的路径并可以很好地编译,但是由于某些原因B找不到A … 当我在两个类中都删除时,它们可以正常编译。 问题答案: 由于您要编译位

  • 我还尝试将我的类路径设置为'C:\ProgramFiles\java\jre1.8.0_144\lib\rt.jar',尽管我读到这不是必需的。 从class01.java创建class01.class没有问题 不过,当我尝试运行程序时

  • 我认为这个错误是由于路径或类路径不正确造成的,但是我在下载Eclipse Neon时使用Java几个月没有问题,因为我设置了路径。我还发现在包中也会导致错误,所以我在包外创建了类,但仍然得到了错误。 Windows7上的Path和ClassPath环境变量是: 路径变量名:C:\ProgramFiles\Java\JDK1.8.0_101\bin;C:\ProgramFiles\Java\JRE1

  • 我是一个新手在使用android工作室制作android应用程序。我正在使用zxing做二维码制作。我按照网站做像添加模块和依赖项的步骤。然而现在我得到了这种错误。有人能帮我修一下吗?多谢了。 消息部分