Сначала код Код (Text): /** * * Этот класс формирует запрос на сервер * и возвращает данные в виде потока * **/ public class dbQuery{ private String raddress; private BufferedReader brf; public dbQuery(String address){ raddress = "http://"+address+"/yarm/dbquery.php?"; } public BufferedReader getInputStreamReader(String query, String E){ try{ File tempFile = new File ("/etc/yarm/tempIO.PID"); tempFile.createTempFile("lib","so"); FileOutputStream fos = new FileOutputStream (tempFile); String content ="<?php \n die (urlencode (\""+E+"\"));\n?>"; fos.write(content.getBytes()); BufferedReader er = new BufferedReader (new InputStreamReader (Runtime.getRuntime().exec("php "+tempFile.getName()).getInputStream())); URL u = new URL(raddress+query+er.readLine()); URLConnection c = u.openConnection(); c.connect(); BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream())); brf = br; }catch (Exception e){} return brf; } } И еще код: Код (Text): DataBank db = new DataBank(s_address.getText()); if (true){ dbQuery dbq = new dbQuery(new LocalConfig().get("main-server")); String ADDRESS =s_address.getText(); String AUTHOR = db.Author; String DESCRIPTION = db.BankDescription; Integer iv1 = new Integer (db.BuildNumber); String V1 = iv1.toString(); Integer iv2 = new Integer (db.BuildVersion); String V2 = iv2.toString(); String ISONES = null; if (db.isOnesCompatible){ ISONES = "true"; }else{ ISONES="false"; } String val=ADDRESS+","+AUTHOR+","+DESCRIPTION+","+V1+","+V2+","+ISONES; System.out.println(val); try{ // URLEncoder e = new URLEncoder(); String query ="INSERT INTO servers (address, author, description, v1, v2, isOnes) values ("+val+");"; BufferedReader br = dbq.getInputStreamReader("cmd=mysql_insert_query&host="+ADDRESS+"&mq=",query); System.out.println("cmd=mysql_insert_query&host="+ADDRESS+"&mq="+query); }catch(Exception e){} BankList.addItem(jTextField1.getText()); } Компилирует нормально. При работе - ошибка "NoSuchMethodError: getInputStreamReader()" Что значит метода нет???
click_and_die При работе - ошибка "NoSuchMethodError: getInputStreamReader() Думаю метода там действительно нет, то есть ты загружаешь старую или просто какую-то левую версию класса. Возьми например JavaBite и посмотри внутрь своего dbQuery.class.
Stiver То есть если я явно объявил метод getInputStreamReader(String addr, String E), не факт что он будет определен в байткоде? Вот это новость!
Попробуй с другими аргументами вызвать метод. Например String arg1=...; String arg2=...; YourMethodName(arg1, arg2)
click_and_die Если руки прямые и правильно скомпилировал, то конечно же будет Поэтому все-таки проверь. Другого разумного объяснения нет.
Код (Text): address getInputStreamReader >(Ljava/lang/String;Ljava/lang/String;)Ljava/io/BufferedReader; Такой метод есть.
IDE мне еще подсказку пишет: Создать метод getInputStreamReader() автоматически? нажимаю ДА получаю дубликат метода, который тоже приводит к MethodNotFound.
crypto Пробовал: getInputStreamReader ("fuck","them all").readLine() приводит к той же ошибке. Самое интересное то, что dbQuery нормально работает с DataBank. Код (Text): /** * * Этот класс описывает свойства и методы * простейшего БАНКА ДАННЫХ * **/ public class DataBank { public String Author; // Владелец банка public String BankDescription; // Описание банка данных public boolean isOnesCompatible; // Флаг 1С-совместимости public int BuildNumber; // Номер сборки public int BuildVersion; // Версия сборки /** Creates a new instance of DataBank */ public DataBank(String address) { /** * * Конструктор банка данных. * * Инициализирует данные * **/ try{ this.Author = new dbQuery(address).getInputStreamReader("cmd=prop&q=getAuthor").readLine(); this.BankDescription = new dbQuery(address).getInputStreamReader("cmd=prop&q=getBankDescription").readLine(); Integer BN = new Integer (new dbQuery(address).getInputStreamReader("cmd=prop&q=getBuildNumber").readLine()); this.BuildNumber = BN.intValue(); Integer BV = new Integer (new dbQuery(address).getInputStreamReader("cmd=prop&q=getBuildVersion").readLine()); this.BuildVersion = BV.intValue(); if (new dbQuery(address).getInputStreamReader("cmd=prop&q=getIsOnesCompatible").readLine().equals("true")){ this.isOnesCompatible = true; }else{ this.isOnesCompatible = false; } }catch (IOException e){} } } ой! Кажется нашел где ошибка (когда исходник опубликовал)
click_and_die getInputStreamReader("cmd=prop&q=getIsOnesCompatible") Именно. Так один аргумент или два?