【问题标题】:Error when compiling cannont access class编译时出错无法访问类
【发布时间】:2011-11-23 22:58:25
【问题描述】:

试图编译这个 AuctionClientMain.java,这是我得到的错误,无法弄清楚:

AuctionClientMain.java:16:无法访问 AuctionClient 错误的类文件:.\AuctionClient.class 类文件包含错误的类:Assignment.AuctionClient 请删除或确保它出现在类路径的正确子目录中。 AuctionClient a = new AuctionClient(args[0],args[1],port);

我已经包含了 AuctionClientMain.java

import Auction.*;
import java.io.*;

public class AuctionClientMain
{
    //Create the client
    public static void main (String args[]) throws IOException
    {
        if(args.length!=3)
        {
            throw new RuntimeException ("Syntax: java AuctionClient <name> <serverhost> <port>");
        }

        //Convert port taken in as string to an integer
        int port = Integer.parseInt(args[2]);
        AuctionClient a = new AuctionClient(args[0],args[1],port);

    }

}

还有拍卖客户

package Auction;

import java.io.*;
import java.net.*;

public class AuctionClient
{

    public AuctionGui gui;

    private Socket socket;
    private DataInputStream dataIn;
    private DataOutputStream dataOut;

    //Auction Client constructor  String name used as identifier for each client to allow server to pick the winning bidder
    public AuctionClient(String name,String server, int port)
    {
        //Create a new gui
        gui = new AuctionGui("Bidomatic 5000");
        //Add the key listener to the input field
        gui.input.addKeyListener (new EnterListener(this,gui));
        //Add the exit listener to the window
        gui.addWindowListener(new ExitListener(this));

        try
        {
            //Create a new socket with server name and port number provided
            socket = new Socket(server, port);
            //Create new data input stream
            dataIn = new DataInputStream(socket.getInputStream());
            //Create new data outpit stream
            dataOut = new DataOutputStream(socket.getOutputStream());

            dataOut.writeUTF(name);
              while (true) 
              {
                gui.output.append("\n"+dataIn.readUTF());
            }
      } 
      catch (Exception e)   
      {
         e.printStackTrace();
      }

    }



    //Send bid to output stream
    public void sentBid(String bid)
    {
        try
        {
            //Write bid out
            dataOut.writeUTF(bid);
        }

        catch(IOException e)
        {
            e.printStackTrace();
        }

    }

    public void disconnect()
    {
        try
        {
            socket.close();
        }

        catch(IOException e)
        {
            e.printStackTrace();
        }
    }
}

【问题讨论】:

  • Assignment.AuctionClient -- 'Assignment' 是从哪里来的?

标签: java


【解决方案1】:

您的AuctionClientMain 课程似乎在默认包中。 AuctionClient 类在包Auction 中。 AuctionClient 的 .class 文件需要位于相对于 AuctionClientMain 的名为 Auction 的子目录中。

或者,将AuctionClient 放入默认包或将AuctionClientMain 放入包Auction

附带说明,Java 约定是包名都是小写的。最好使用package auction; 而不是package Auction;

【讨论】:

    【解决方案2】:

    因为 AuctionClient 在 Auction 包中,编译器希望在名为 Auction 的目录中找到 Java 源文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 2017-04-07
      • 2013-08-17
      • 2014-10-17
      • 2017-09-12
      相关资源
      最近更新 更多