error:构造函数Thread中的Thread不能应用于给定的类型;

时间:2014-12-03 23:15:27

标签: java multithreading sockets

嘿,我有这个非常奇怪的错误,可能与我的java版本有关。

这是我的班级:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;


public class ClientThread extends Thread{
    private Socket clientSocket;

    ClientThread(Socket clientSocket) {
        this.clientSocket = clientSocket;
    }

    public void run() {
        try {
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

            String message;
            while (((message = in.readLine()) != null)) {
                // out.println(message);
                System.out.println(message);
            }
        } catch (IOException e) {

        }
    }

    public Socket getClientSocket() {
        return clientSocket;
    }

    public void setClientSocket(final Socket clientSocket) {
        this.clientSocket = clientSocket;
    }
}

这是我的java版本:

java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

当我编译该类时,我收到以下错误:

ClientThread.java:11: error: constructor Thread in class Thread cannot be applied to given types;
    ClientThread(Socket clientSocket) {
                                      ^
  required: Socket
  found: no arguments
  reason: actual and formal argument lists differ in length
1 error

这个错误非常奇怪,我不明白。我在互联网上的教程中找到了几乎完全相同的课程。我猜测我的java版本有错误。我的操作系统是ubuntu。

1 个答案:

答案 0 :(得分:2)

听起来你在默认包中有一个Thread类 - 可能只是类文件,而不是源文件。 java.lang.*是自动导入的,其余所有导入都是单类导入,所以这是我唯一可以看到的东西。

您应该查看您正在编译的目录,并确保它具有您期望的类...如果您正在重建,您可以删除所有首先是类文件,然后你知道只有源文件是相关的。

虽然可以明确地继续java.lang.Thread扩展,但找到流氓Thread类并将其删除会更好。