为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复找不到符号编译器错误

如何修复找不到符号编译器错误

慕斯王 2023-06-14 14:19:51
我正在学习如何在 Java 中制作客户端/服务器程序的教程(这里是: https: //docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html)我到了最后一部分套接字教程,您可以在其中制作客户端/服务器程序,其中服务器讲敲门笑话,客户端响应:服务员:“敲敲!”客户:“谁在那里?”服务器:“德克斯特。”客户:“德克斯特是谁?”服务器:“有冬青树枝的德克斯特大厅。”客户:“呻吟。”我已经复制了 KnockKnockClient.java、KnockKnockServer.java、KnockKnockProtocol.java 的代码(我将这些文件命名为 Client.java、Server.java、Protocol.java),现在我要做的最后一部分是编译和运行代码. 我成功地编译了协议和客户端代码,但是每当我尝试编译服务器代码时,我都会收到一个看起来像第一个错误的错误我已经尝试了所有方法,但找不到修复它的方法。我知道导致错误的代码行试图使用 KnockKnockProtocol.java 文件创建一个对象,但这就是我真正能弄清楚的全部内容。我检查了拼写,尝试从 SocketsKnockKnockServer 包的父文件夹编译代码并且确实编译了代码,但是当我尝试从父文件夹运行它时,我得到了一个看起来像第二个错误的不同错误。当我试图从包文件夹运行它时,它给了我和以前一样的错误。//the codepackage SocketsKnockKnockServer;import java.net.*;import java.io.*;public class Server {    public static void main(String[] args) throws IOException {        if (args.length != 1) {            System.err.println("Usage: Java Server.java <port number>");            System.exit(1);        }        int portNumber = Integer.parseInt(args[0]);        try (            ServerSocket serverSocket = new ServerSocket(portNumber);            Socket clientSocket = serverSocket.accept();            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));        ) {            String inputLine, outputLine;            //intiate conversation with client            Protocol kkp = new Protocol();            outputLine = kkp.processInput(null);            out.println(outputLine);            while ((inputLine = in.readLine()) !=null) {                outputLine = kkp.processInput(inputLine);                out.println(outputLine);                if (outputLine.equals("bye"))                    break;            }        } 
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

我通过将文件(Client.java、Server.java、Protocol.java)传输到源文件夹而不是将它们保存在包中来解决问题。

查看完整回答
反对 回复 2023-06-14
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您的 java 文件名为 KnockKnockProtocol.java,但您正在创建的对象名为 Protocol。要么将 KnockKnockProtocol.java 重命名为 Protocol.java,要么在 Server 中创建一个名为 Protocol 的内部类。此外,它需要是静态的。



查看完整回答
反对 回复 2023-06-14
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信