【问题标题】:error: cannot find symbol [duplicate]错误:找不到符号[重复]
【发布时间】:2012-12-27 16:37:37
【问题描述】:

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

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;
    }
}

我在这方面做错了什么?我确定我拼写正确,是不是忘记了什么?

【问题讨论】:

    标签: java find symbols minecraft


    【解决方案1】:

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

    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 会报错,因为您还没有声明任何具有该名称的实例变量。

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

    【讨论】:

      【解决方案2】:

      所有变量:

      int protocolVersion = par1;
          String serverHost = par2Str;
          int serverPort = par3;
      String username = par4Str;
      

      是构造函数的局部变量。将它们设为字段。

      【讨论】:

      • 我该怎么做?抱歉,我是 Java 新手。编辑:没关系我明白了。
      猜你喜欢
      • 2011-06-24
      • 2014-03-10
      • 2012-10-31
      • 1970-01-01
      • 2021-11-21
      • 2013-03-08
      • 2016-01-31
      • 2012-08-27
      • 2014-03-14
      相关资源
      最近更新 更多