Java 包与类型冲突

Java 包与类型冲突,java,Java,可能重复: 我是java新手,但我试着为游戏谱系2编写脚本 这里有一个密码: package ZergZ.ZTeleport; import javolution.util.FastMap; import com.l2jserver.Config; import com.l2jserver.gameserver.handler.IVoicedCommandHandler; import com.l2jserver.gameserver.model.actor.instance.L2PcInst

可能重复:

我是java新手,但我试着为游戏谱系2编写脚本

这里有一个密码:

package ZergZ.ZTeleport;
import javolution.util.FastMap;
import com.l2jserver.Config;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.handler.VoicedCommandHandler;

public class ZTeleport implements IVoicedCommandHandler
{
    private static final String[] VOICED_COMMANDS =
    {
        "teleport"
    };
    @Override
    public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
    {
        if (activeChar == null)
            return false;

        if (params.equalsIgnoreCase("aden"))
        {
            activeChar.teleToLocation(147736,-56243,-2781);
        }
        if (params.equalsIgnoreCase("gracia"))
        {
            activeChar.teleToLocation(-186742,244167,2675);
        }
        if (params.equalsIgnoreCase("pvp1"))
        {
            activeChar.teleToLocation(147736,-56243,-2781);
        }
        if (params.equalsIgnoreCase("pvp2"))
        {
            activeChar.teleToLocation(179337,221937,4475);
        }

    }
    @Override
    public String[] getVoicedCommandList()
    {
        return VOICED_COMMANDS;
    }


}
当服务器启动时,java说: 1.\ZTeleport.java中的错误(在第17行)
包ZergZ.ZTeleport
^^^^^^^^^^^^^^^^^^^^
包ZergZ.ZTeleport与类型冲突

该脚本位于ZergZ/ZTeleport.java中

我会给你另一个很好的脚本:

package custom.HeroCirclet;

import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;

public class HeroCirclet extends Quest
{
______
}

谢谢。

这是因为在ZergZ包中有一个名为
ZTeleport
的类和一个名为
ZergZ.ZTeleport
的包

名称基本上是Java文件所在的项目目录

这意味着如果
ZTeleport.java
位于
ZergZ
目录中,则包名为

package ZergZ;

您没有在包声明中指定类名,目录用
而不是目录文件夹令牌分隔。

这是因为在ZergZ包中有一个名为
ZTeleport
的类和一个名为
ZergZ.ZTeleport
的包

名称基本上是Java文件所在的项目目录

这意味着如果
ZTeleport.java
位于
ZergZ
目录中,则包名为

package ZergZ;

您没有在包声明中指定类名,目录用
而不是目录文件夹标记分隔。

这里的冲突是包名和类名之间的冲突,它们是相同的。如果您坚持通常的命名约定(使用小写开头命名包,使用大写开头命名类),则应避免此类情况。

此处的冲突是包名和类名之间的冲突,两者是相同的。如果您坚持通常的命名约定(使用小写开头命名包,使用大写开头命名类),则应该避免这种情况。

您应该遵循Java命名约定。将您的软件包更改为:

package zergZ.zTeleport; // all name is begin with lower

// no change, but for clearer : all class name should begin with higher character  
public class ZTeleport implements IVoicedCommandHandler 
{
}
当然,在这之后,您应该刷新或/和重建项目,以查看它是否正常工作


希望得到以下帮助:)

您应该遵循Java命名约定。将您的软件包更改为:

package zergZ.zTeleport; // all name is begin with lower

// no change, but for clearer : all class name should begin with higher character  
public class ZTeleport implements IVoicedCommandHandler 
{
}
当然,在这之后,您应该刷新或/和重建项目,以查看它是否正常工作

希望得到以下帮助:)

您说“脚本位于ZergZ/ZTeleport.java中”。这意味着类
ZTeleport
属于包
ZergZ
。但是您已经声明它属于另一个包,
ZergZ.ZTeleport

在第二个示例中,我敢打赌源文件位于custom/HeroCirclet/HeroCirclet.java中,它与其包声明相匹配,并且不会产生命名冲突

您需要将源文件(人们通常不称java源文件为“脚本”,顺便说一句)移动到与其声明的包匹配的目录中,或者更改包声明以匹配其位置。

您说“脚本位于ZergZ/ZTeleport.java中”。这意味着类
ZTeleport
属于包
ZergZ
。但是您已经声明它属于另一个包,
ZergZ.ZTeleport

在第二个示例中,我敢打赌源文件位于custom/HeroCirclet/HeroCirclet.java中,它与其包声明相匹配,并且不会产生命名冲突


您或者需要将源文件(人们通常不称java源文件为“脚本”,顺便说一句)移动到与其声明的包匹配的目录中,或者更改包声明以匹配其位置。

如果您看到它显示的错误

package ZergZ.ZTeleport;
           ^^^^^^^^^^^^^^^^^^^^
The package ZergZ.ZTeleport collides with a type
因此,基本上您在命名类和包的方式之间产生了冲突。如果您坚持java约定,可以将其命名为:

// Notice the first character of package name is small character
package zergZ.zTeleport;

//  Class Name's first character is capital.
public class ZTeleport implements IVoicedCommandHandler{ 
    .. 
} 

如果你看到错误,它会说

package ZergZ.ZTeleport;
           ^^^^^^^^^^^^^^^^^^^^
The package ZergZ.ZTeleport collides with a type
因此,基本上您在命名类和包的方式之间产生了冲突。如果您坚持java约定,可以将其命名为:

// Notice the first character of package name is small character
package zergZ.zTeleport;

//  Class Name's first character is capital.
public class ZTeleport implements IVoicedCommandHandler{ 
    .. 
} 

我会给你一个脚本,它工作完美,它;It’就像我的(行乞)包裹一样;导入com.l2jserver.gameserver.model.actor.L2Npc;导入com.l2jserver.gameserver.model.actor.instance.L2PcInstance;导入com.l2jserver.gameserver.model.quest.quest;导入com.l2jserver.gameserver.model.quest.QuestState;公共类HeroCirclet扩展了Quest{我可以向您保证,
HeroCirclet
在目录
custom/HeroCirclet
下,这就是它编译得很好的原因。我给您一个脚本,它工作得很完美,它和我的(Begging)一样打包custom.HeroCirclet;导入com.l2jserver.gameserver.model.actor.L2Npc;导入com.l2jserver.gameserver.model.actor.instance.L2PcInstance;导入com.l2jsserver.gameserver.model.quest.quest;导入com.l2jserver.gameserver.model.quest.state;公共类HeroCirclet扩展了quest{我可以向您保证,
HeroCirclet
在目录
custom/HeroCirclet
下,这就是为什么它可以很好地编译。您的意思是,您用小写开头字符重命名了您的包,但仍然有错误“包与类型冲突”,使用新的包名?我会感到惊讶(这并不意味着它能解决你所有的问题,但这是一个开始)。你的意思是你用小写字母重命名了你的包,但是你仍然有错误“包与类型冲突”,使用新的包名?我会感到惊讶(这并不意味着它能解决你所有的问题,但这是一个开始)。