java - 错误: cannot find symbol

标签 java find symbols minecraft

我正在尝试制作一个我的世界模组,但我无法弄清楚这个错误:

src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:35: error: cannot fin
d symbol
                par1DataOutputStream.writeByte(this.protocolVersion);
                                               ^

symbol: variable protocolVersion
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:36: error: cannot fin
d symbol
        writeString(this.serverHost, par1DataOutputStream);
                    ^

symbol: variable serverHost
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:37: error: cannot fin
d symbol
        par1DataOutputStream.writeInt(this.serverPort);
                                      ^

symbol: variable serverPort
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:38: error: cannot fin
d symbol
            writeString(this.username, par1DataOutputStream);
                            ^

symbol: variable username
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:54: error: cannot fin
d symbol
        return 3 + 2 * this.username.length();
                       ^

symbol: variable username
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:62: error: cannot fin
d symbol
    return this.protocolVersion;
               ^

symbol: variable protocolVersion
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:70: error: cannot fin
d symbol
    return this.username;
               ^

这是我的 Packet2ClientProtocol.java:

package net.minecraft.src;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

public class Packet2ClientProtocol extends Packet
{
    public Packet2ClientProtocol() {}

    public void Packet2ClientProtocol(int par1, String par2Str, int par3, String par4Str)
    {
        int protocolVersion = par1;
        String serverHost = par2Str;
        int serverPort = par3;
        String username = par4Str;
    }

    /**
    * Abstract. Reads the raw packet data from the data stream.
    */
    public void readPacketData(DataInputStream par1DataInputStream) throws IOException
    {
    int protocolVersion = par1DataInputStream.readByte();
        String serverHost = readString(par1DataInputStream, 255);
        int serverPort = par1DataInputStream.readInt();
    String username = Info.Username;
    }

    /**
    * Abstract. Writes the raw packet data to the data stream.
    */
    public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
    {
    par1DataOutputStream.writeByte(this.protocolVersion);
        writeString(this.serverHost, par1DataOutputStream);
        par1DataOutputStream.writeInt(this.serverPort);
    writeString(this.username, par1DataOutputStream);
    }

    /**
    * Passes this Packet on to the NetHandler for processing.
    */
    public void processPacket(NetHandler par1NetHandler)
    {
        par1NetHandler.handleClientProtocol(this);
    }

    /**
    * Abstract. Return the size of the packet (not counting the header).
    */
    public int getPacketSize()
    {
        return 3 + 2 * this.username.length();
    }

    /**
    * Returns the protocol version.
    */
    public int getProtocolVersion()
    {
        return this.protocolVersion;
    }

    /**
    * Returns the username.
    */
    public String getUsername()
    {
        return this.username;
    }
}

我在这件事上做错了什么?我确定我拼写的所有内容都是正确的,我是不是忘记了什么?

最佳答案

关于您尝试创建构造函数的几点:-

public void Packet2ClientProtocol(int par1, String par2Str, int par3, String par4Str)
{
    int protocolVersion = par1;
    String serverHost = par2Str;
    int serverPort = par3;
    String username = par4Str;
}
  1. 构造函数没有任何返回类型(从那里删除 void)。

  2. 您尚未将参数值分配给实例变量。相反,您创建了一些局部变量,您当然无法在该构造函数之外访问这些变量。

因此,使用 this.protocolVersion 会给您带来错误,因为您尚未声明任何具有该名称的实例变量。

您应该将变量声明为类中的字段。

关于java - 错误: cannot find symbol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14306245/

相关文章:

java - OSGi 中的反序列化问题

python - 查找txt文件中的行号或元素

ios - 重复符号错误 : SBJsonParser. o?

php - 引用-这个符号在PHP中是什么意思?

url - 有 #!网址中的组合有特殊含义吗?

java - Infinispan的configuration.xml在哪里找到

Java 面向对象的类之间的函数调用

Java 关闭 BufferedReader、Scanner 和 FileReader

bash - 如何告诉 find 命令转义文件名中的空格字符?

html - lxml xpath - 找不到正文标签