2015-06-25 4 views
0

В настоящее время выполняется типовой проект, и у меня возникают проблемы с импортом класса List. Когда я пытаюсь скомпилировать класс, он выдает ошибку в командной строке, говорящей, что не может найти символ и указывает на символ списка. Мне было интересно, как вы это исправите. Кажется, это работает для String и Integer, но не для List.не может найти символ, java, classloader

java-файл автоматически создается через другую программу, которая переводит файлы .scr. В файле Scr я использую следующую строку:

type <java> "java.lang.List" from "rt.jar" as List; 

Java файл:

package demos.Redis; 
    import java.io.BufferedReader; 
    import java.io.IOException; 
    import java.io.InputStreamReader; 
    import java.io.PrintWriter; 
    import java.net.Socket; 
    import java.net.ServerSocket; 
    import java.net.UnknownHostException; 

    public class ClientRole { 
     private BufferedReader socketServerIn = null; 
     private PrintWriter socketServerOut = null; 
    public ClientRole(){ 
     ServerSocket serverServer = null; 
     try { 
      serverServer = new ServerSocket(20000); 
     } 
     catch(IOException e) { 
      System.out.println("Unable to listen on ports"); 
      System.exit(+1); 
     } 
     Socket socketServer = null; 
     try { 
      System.out.println("Accepting..."); 
      socketServer = serverServer.accept(); 
      System.out.println("Server accepted"); 
     } 
     catch(IOException e) { 
      System.out.println("Accept failed"); 
      System.exit(+1); 
     } 
     try { 
      socketServerIn = new BufferedReader(new InputStreamReader(socketServer.getInputStream())); 
      socketServerOut = new PrintWriter(socketServer.getOutputStream(), true); 
     } 
     catch(IOException e) { 
      System.out.println("Read failed"); 
      System.exit(+1); 
     } 
    } 
    public void send_WATCHListToServer(List payload) { HERE IS WHERE IT BREAKS!! 
     this.socketServerOut.println(payload); 
    } 
    public Choice1 send_Choice1LabelToServer(String payload) { 
     this.socketServerOut.println(payload); 
     int intLabelChoice1 = Integer.parseInt(payload); 
     switch(intLabelChoice1){ 
      case 1: 
      return new Choice1(Choice1.GET); 
      case 2: 
      return new Choice1(Choice1.WATCH); 
      case 3: 
      default: 
      return new Choice1(Choice1.MULTI); 
     } 
    } 
    public void send_GETStringToServer(String payload) { 
     this.socketServerOut.println(payload); 
    } 
    public String receive_GET_respStringFromServer() { 
     String line = ""; 
     try { 
      line = this.socketServerIn.readLine(); 
     } 
     catch(IOException e) { 
      System.out.println("Input/Outpur error."); 
      System.exit(+1); 
     } 
     return line; 
    } 
    public void send_MULTIStringToServer(String payload) { 
     this.socketServerOut.println(payload); 
    } 
    public Choice2 send_Choice2LabelToServer(String payload) { 
     this.socketServerOut.println(payload); 
     int intLabelChoice2 = Integer.parseInt(payload); 
     switch(intLabelChoice2){ 
      case 1: 
      return new Choice2(Choice2.SET); 
      case 2: 
      return new Choice2(Choice2.DISCARD); 
      case 3: 
      default: 
      return new Choice2(Choice2.EXEC); 
     } 
    } 
    public void send_SETStringToServer(String payload) { 
     this.socketServerOut.println(payload); 
    } 
    public void send_DISCARDStringToServer(String payload) { 
     this.socketServerOut.println(payload); 
    } 
    public void send_EXECStringToServer(String payload) { 
     this.socketServerOut.println(payload); 
    } 
    public Choice3 receive_Choice3LabelFromServer() { 
     String stringLabelChoice3 = ""; 
     try { 
      stringLabelChoice3 = this.socketServerIn.readLine(); 
     } 
     catch(IOException e) { 
      System.out.println("Input/Outpur error, unable to get label"); 
      System.exit(+1); 
     } 
     int intLabelChoice3 = Integer.parseInt(stringLabelChoice3); 
     switch(intLabelChoice3){ 
      case 1: 
      return new Choice3(Choice3.EXEC_OK); 
      case 2: 
      default: 
      return new Choice3(Choice3.EXEC_FAIL); 
     } 
    } 
    public String receive_EXEC_okStringFromServer() { 
     String line = ""; 
     try { 
      line = this.socketServerIn.readLine(); 
     } 
     catch(IOException e) { 
      System.out.println("Input/Outpur error."); 
      System.exit(+1); 
     } 
     return line; 
    } 
    public String receive_EXEC_failStringFromServer() { 
     String line = ""; 
     try { 
      line = this.socketServerIn.readLine(); 
     } 
     catch(IOException e) { 
      System.out.println("Input/Outpur error."); 
      System.exit(+1); 
     } 
     return line; 
    } 
    } 

Командная строка

+5

'java.util.List' вместо' java.lang.List' возможно? –

+0

ах, очень умный. Я дам ему удар. – spaga

+0

никогда не работал, но спасибо – spaga

ответ

1

Y в нашем файле Java отсутствует оператор import для java.util.List, поэтому он не компилируется.

В отличие от String и Integer, список отсутствует в пакете java.lang. Вам нужно импортировать java.util.List, а не java.lang.List.

Если я правильно понимаю ваш сценарий, ваша другая программа генерирует операторы импорта и пытается добавить импорт для java.lang.List, который на самом деле не существует. Интересно, что в вашем коде для java.lang.List нет инструкции import. Я не знаю, если это ошибка в вашей другой программе или функции! Но более вероятно, что ваша проблема исчезнет, ​​если вы замените свою строку в файле .scr type <java> "java.util.List" from "rt.jar" as List;

+0

Я думаю, что это должно работать, но это не так. Я думаю, что в программе переводчика есть ошибка (и есть сотни). – spaga

+1

Это устраняет проблему. Когда я добавил импорт, он просто изменил ошибку, но новая ошибка была просто возвратом List из метода, который так легко исправлен. И просто понял, что тот, кто сделал код, вообще не должен использовать List. Всем спасибо. – spaga

0

Вы используете список интерфейсов, но вы не импортировать его, он говорит, что Он не может найти символ java.lang.List, потому что он пытается найти этот класс в пакете java.lang по умолчанию, добавьте import java.util.List, и у вас не возникнут проблемы

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