Прошу помощи с алгоритмом

Тема в разделе "WASM.HEAP", создана пользователем click_and_die, 10 апр 2007.

  1. click_and_die

    click_and_die New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    192
    Сначала код

    Код (Text):
    1. /**
    2.  *
    3.  * Этот класс формирует запрос на сервер
    4.  * и возвращает данные в виде потока
    5.  *
    6.  **/
    7.  
    8.  
    9. public class dbQuery{
    10.    
    11.     private String raddress;
    12.     private BufferedReader brf;
    13.    
    14.     public dbQuery(String address){
    15.        
    16.         raddress = "http://"+address+"/yarm/dbquery.php?";
    17.        
    18.        
    19.     }
    20.    
    21.     public BufferedReader getInputStreamReader(String query, String E){
    22.        
    23.         try{
    24.            
    25.             File tempFile = new File ("/etc/yarm/tempIO.PID");
    26.             tempFile.createTempFile("lib","so");
    27.            
    28.             FileOutputStream fos = new FileOutputStream (tempFile);
    29.            
    30.             String content ="<?php \n die (urlencode (\""+E+"\"));\n?>";
    31.            
    32.             fos.write(content.getBytes());
    33.            
    34.             BufferedReader er = new BufferedReader (new InputStreamReader (Runtime.getRuntime().exec("php "+tempFile.getName()).getInputStream()));
    35.            
    36.             URL u = new URL(raddress+query+er.readLine());
    37.             URLConnection c = u.openConnection();
    38.            
    39.             c.connect();
    40.            
    41.             BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
    42.            
    43.             brf = br;
    44.            
    45.         }catch (Exception e){}
    46.        
    47.         return brf;
    48.        
    49.     }
    50.  
    51.        
    52. }
    И еще код:

    Код (Text):
    1.       DataBank db = new DataBank(s_address.getText());
    2.       if (true){
    3.           dbQuery dbq = new dbQuery(new LocalConfig().get("main-server"));
    4.          
    5.           String ADDRESS =s_address.getText();
    6.           String AUTHOR = db.Author;
    7.           String DESCRIPTION = db.BankDescription;
    8.          
    9.           Integer iv1 = new Integer (db.BuildNumber);
    10.           String V1 = iv1.toString();
    11.          
    12.           Integer iv2 = new Integer (db.BuildVersion);
    13.           String V2 = iv2.toString();
    14.          
    15.           String ISONES = null;
    16.          
    17.           if (db.isOnesCompatible){
    18.              
    19.               ISONES = "true";
    20.           }else{
    21.              
    22.               ISONES="false";
    23.           }
    24.          
    25.           String val=ADDRESS+","+AUTHOR+","+DESCRIPTION+","+V1+","+V2+","+ISONES;
    26.           System.out.println(val);
    27.        
    28.          
    29.           try{
    30.              
    31.             //  URLEncoder e = new URLEncoder();
    32.                String query ="INSERT INTO servers (address, author, description, v1, v2, isOnes) values ("+val+");";
    33.               BufferedReader br = dbq.getInputStreamReader("cmd=mysql_insert_query&host="+ADDRESS+"&mq=",query);
    34.               System.out.println("cmd=mysql_insert_query&host="+ADDRESS+"&mq="+query);
    35.           }catch(Exception e){}
    36.          BankList.addItem(jTextField1.getText());  
    37.       }
    Компилирует нормально. При работе - ошибка "NoSuchMethodError: getInputStreamReader()"
    Что значит метода нет???
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    click_and_die
    а причем здесь алгоритм?
     
  3. click_and_die

    click_and_die New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    192
    Здесь приведена последовательность команд, необходимая для вызова метода getInputStreamReader()
     
  4. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    click_and_die
    При работе - ошибка "NoSuchMethodError: getInputStreamReader()

    Думаю метода там действительно нет, то есть ты загружаешь старую или просто какую-то левую версию класса. Возьми например JavaBite и посмотри внутрь своего dbQuery.class.
     
  5. click_and_die

    click_and_die New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    192
    Stiver
    То есть если я явно объявил метод getInputStreamReader(String addr, String E), не факт что он будет определен в байткоде? Вот это новость!
     
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Попробуй с другими аргументами вызвать метод. Например
    String arg1=...;
    String arg2=...;
    YourMethodName(arg1, arg2)
     
  7. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    click_and_die
    Если руки прямые и правильно скомпилировал, то конечно же будет :) Поэтому все-таки проверь. Другого разумного объяснения нет.
     
  8. click_and_die

    click_and_die New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    192
    Код (Text):
    1. address getInputStreamReader >(Ljava/lang/String;Ljava/lang/String;)Ljava/io/BufferedReader;
    Такой метод есть.
     
  9. click_and_die

    click_and_die New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    192
    IDE мне еще подсказку пишет: Создать метод getInputStreamReader() автоматически? нажимаю ДА получаю дубликат метода, который тоже приводит к MethodNotFound.
     
  10. click_and_die

    click_and_die New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    192
    crypto
    Пробовал:

    getInputStreamReader ("fuck","them all").readLine() приводит к той же ошибке.

    Самое интересное то, что dbQuery нормально работает с DataBank.

    Код (Text):
    1. /**
    2.  *
    3.  * Этот класс описывает свойства и методы
    4.  * простейшего БАНКА ДАННЫХ
    5.  *
    6.  **/
    7.  
    8. public class DataBank {
    9.    
    10.     public String Author; // Владелец банка
    11.     public String BankDescription; // Описание банка данных
    12.    
    13.     public boolean isOnesCompatible; // Флаг 1С-совместимости
    14.    
    15.     public int BuildNumber; // Номер сборки
    16.     public int BuildVersion; // Версия сборки
    17.    
    18.     /** Creates a new instance of DataBank */
    19.     public DataBank(String address) {
    20.        
    21.         /**
    22.          *
    23.          * Конструктор банка данных.
    24.          *
    25.          * Инициализирует данные
    26.          *
    27.          **/
    28.        
    29.         try{
    30.            
    31.             this.Author = new dbQuery(address).getInputStreamReader("cmd=prop&q=getAuthor").readLine();
    32.             this.BankDescription = new dbQuery(address).getInputStreamReader("cmd=prop&q=getBankDescription").readLine();
    33.            
    34.             Integer BN = new Integer (new dbQuery(address).getInputStreamReader("cmd=prop&q=getBuildNumber").readLine());
    35.             this.BuildNumber = BN.intValue();
    36.            
    37.             Integer BV = new Integer (new dbQuery(address).getInputStreamReader("cmd=prop&q=getBuildVersion").readLine());
    38.             this.BuildVersion = BV.intValue();
    39.            
    40.             if (new dbQuery(address).getInputStreamReader("cmd=prop&q=getIsOnesCompatible").readLine().equals("true")){
    41.                
    42.                 this.isOnesCompatible = true;
    43.             }else{
    44.                
    45.                 this.isOnesCompatible = false;
    46.             }
    47.         }catch (IOException e){}
    48.        
    49.     }
    50.    
    51. }
    ой! Кажется нашел где ошибка:) (когда исходник опубликовал)
     
  11. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    click_and_die
    getInputStreamReader("cmd=prop&q=getIsOnesCompatible")

    Именно. Так один аргумент или два? ;)
     
  12. click_and_die

    click_and_die New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    192
    Stiver

    Просто с начала был один а потом пришла надобность сделать два

    Слепой я!:)))