2014-12-03 2 views
0

Эй, у меня есть эта очень странная ошибка, которая, вероятно, связана с моей версией java.error: constructor Thread в классе Thread не может применяться к заданным типам;

Вот мой класс:

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.

+0

Odd - он компилируется для меня ... –

+0

У вас есть свой собственный класс Thread, который вы используете, который имеет конструктор, который принимает «Socket»? Это единственный способ получить здесь ошибку компилятора. – rgettman

+0

@ JonSkeet Вот что я догадался. Вероятно, это связано с версиями java. Любые идеи, как отлаживать ошибки? – Marijus

ответ

1

Похоже, что у вас был класс Thread в пакете по умолчанию - потенциально только файл класса, а не исходный файл. java.lang.* импортируется автоматически, а весь остальной импорт - это импорт одного класса, так что это единственное, что я вижу, что могло бы произойти.

Вы должны посмотреть на каталог, в котором вы компилируете, и убедитесь, что только только имеет классы, которые вы ожидаете от него ... если вы перестраиваете, вы можете сначала удалить все файлы классов, и тогда вы знаете, что будут иметь значение только исходные файлы.

В то время как вы мог держать расширение java.lang.Thread явно, было бы гораздо лучше, чтобы найти мошенник Thread класса и удалить его.

Смежные вопросы