Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Deimoser
4 / 4 / 0
Регистрация: 16.10.2012
Сообщений: 39
1

Не удается вызвать свой метод (cannot find symbol)

15.04.2013, 17:01. Просмотров 2069. Ответов 14
Метки нет (Все метки)

Дробрый день, пытаюсь вызвать свой метод, описанный в одном файле, на jsp страничке, на что нетбинс выдает ошибку "cannot find symbol symbol: method getDate() location: class Object"

Причем вызов метода нормально работает на той же страничке, где он объявлен. Например

объявим метод
public String getDate(){
return Date;
}

чуть ниже переопределим toString, который, допустим, помимо метода getDate() вызывает еще один метод getOther() и какуюнибудь информацию.
@Override
public String toString() {
return "Дата:" + getDate() + "Остальное:" + getOther();
}

Далее при вызове на jsp страничке
out.println(MyClass.HashTable_Container.get(key));
все работает нормально и вадает все как переопределено в toString, но в месте, где требуется вывести одну лишь дату и куда я прописал
MyClass.HashTable_Container.get(key).getDate()
выдает выше сказанную ошибку.

В чем дело?
Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 17:01
Ответы с готовыми решениями:

cannot find symbol
Вот переписал пример из книги но почему-то не работает, в чем может быть...

Ошибка cannot find symbol
public class a { public static void main(String args) { String c =...

Android: cannot find symbol constructor Intent
Собсно сабж. package com.example; import android.app.Activity; import...

Метод main и как им вызвать другой метод
Доброго всем времени суток. У меня возникла проблема. Вобщем дело такое. У меня...

Cannot find symbol symbol: class Serializable в IDEA Ubuntu
В IDEA после View -> Tool Windows -> Maven Project -> Install появляются ошибки...

14
exiqa
486 / 332 / 71
Регистрация: 24.12.2011
Сообщений: 591
15.04.2013, 17:53 2
предположу, что ваш хэштейблконтейнер возвращает тип Object, у которого естественно нет метода getDate()
0
Deimoser
4 / 4 / 0
Регистрация: 16.10.2012
Сообщений: 39
15.04.2013, 18:08  [ТС] 3
exiqa, да, тип Object.
Как поступить с методом в данном случае?
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
15.04.2013, 18:26 4
http://www.k-press.ru/cs/2008/3/generic/generic.asp
0
Deimoser
4 / 4 / 0
Регистрация: 16.10.2012
Сообщений: 39
15.04.2013, 18:41  [ТС] 5
AckiyBolt, если я верно понял смысл, wildcards удобен при работе с разными типами, когда значене типа неизвестно, но как быть мне, присвоить типу Object метод getDate()?
0
exiqa
486 / 332 / 71
Регистрация: 24.12.2011
Сообщений: 591
15.04.2013, 19:19 6
сделайте ваш хештейбл generic-ом. Тогда и возвращаться будет не Object, а ваш класс. Или просто кастуйте полученный объект к вашему классу.
1
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
15.04.2013, 19:37 7
Цитата Сообщение от Deimoser Посмотреть сообщение
AckiyBolt, если я верно понял смысл, wildcards удобен при работе с разными типами, когда значене типа неизвестно, но как быть мне, присвоить типу Object метод getDate()?
вы бы для начала выложили сорцы вашего HashTable_Container. тогда было бы понятно что именно с ним делать
0
Deimoser
4 / 4 / 0
Регистрация: 16.10.2012
Сообщений: 39
15.04.2013, 19:47  [ТС] 8
exiqa, AckiyBolt,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class MyClass extends HttpServlet {
public static Hashtable Mess_Container = new Hashtable();
public static Hashtable HashTable_Container = new Hashtable();
 
    public Object PutMess(String a, Object Mess2) {
        return Mess_Container.put(a, Mess2); 
    }
    public Object GetMess(String a) {
        return Mess_Container.get(a);   
    }
    
        Date now = new Date();
        DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
        String Date_Create = formatter.format(now); 
        String Other = other;
        String key = key;
        Mess2 x = new Mess2(Date_Create, Other); 
  
            HashTable_Container.put(key, x);
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
15.04.2013, 19:49 9
мама...
а вы точно все-все скопипастили?
0
Deimoser
4 / 4 / 0
Регистрация: 16.10.2012
Сообщений: 39
15.04.2013, 19:59  [ТС] 10
AckiyBolt, нет, за исключением незначительных упрощений и подключаемых библиотек + закрывающие скобки.

Mess2 это и есть класс в котором описан метод getDate() и переопределен toString
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
15.04.2013, 20:14 11
попробуйте все-таки скопипастить все
0
Deimoser
4 / 4 / 0
Регистрация: 16.10.2012
Сообщений: 39
15.04.2013, 20:18  [ТС] 12
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package ololo;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Hashtable;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.binary.Base64;
import ololo.Mess2;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.Date;
public class MessageServlet extends HttpServlet {
public static Hashtable Mess_Container = new Hashtable();
public static Hashtable SubForum1_Container = new Hashtable(); // Контейнер разделов
public static Hashtable SubForum2_Container = new Hashtable(); // Контейнер разделов
public static Hashtable SubForum3_Container = new Hashtable(); // Контейнер разделов
 
    public Object PutMess(String a, Object Mess2) {
        return Mess_Container.put(a, Mess2); 
    }
    public Object GetMess(String a) {
        return Mess_Container.get(a);   
    }
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, ClassNotFoundException {
                request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
        
       String queryData = request.getQueryString();
       String SubF = request.getParameter("SubF_list");
       String queryData_login = request.getParameter("name");
       String queryData_pass = request.getParameter("pass");  
       String theme_header = request.getParameter("theme_header");
       String theme_text = request.getParameter("theme_text");
 
       /******************* Раскодирование логина и пароля *****************/
       String revers_encode_login = new StringBuffer(queryData_login).reverse().toString();
       String revers_encode_pass = new StringBuffer(queryData_pass).reverse().toString();
          
       byte[] LOGIN = Base64.decodeBase64(revers_encode_login.getBytes());
       byte[] PASS = Base64.decodeBase64(revers_encode_pass.getBytes());          
       Arrays.toString(LOGIN);
       Arrays.toString(PASS);          
       String new_login = new String(LOGIN); 
       String new_pass = new String(PASS); 
        /********************************************************************/
       
        Date now = new Date();
        DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
        String Date_Create = formatter.format(now); 
        
        Mess2 x = new Mess2(theme_text, new_login, Date_Create, SubF); // Создаем объект сообщения
        
        if("Раздел 1".equals(SubF)){
            SubForum1_Container.put(theme_header, x); 
        }
        
        if("Раздел 2".equals(SubF)){
            SubForum2_Container.put(theme_header, x); 
        }
                
        if("Раздел 3".equals(SubF)){
            SubForum3_Container.put(theme_header, x); 
        }
        
        try {  
            out.println("<html>");
            out.println("<head>");
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html");
            out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
            out.println("<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0; URL=ok_theme.jsp?" + queryData +"\">");
            out.println("<title>Регистрация | Форум БалластTEAM</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("</body>");
            out.println("</html>");
        } finally {            
            out.close();
        }
    }
 
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (IOException ex) {
            Logger.getLogger(MessageServlet.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MessageServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
 
    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (IOException ex) {
            Logger.getLogger(MessageServlet.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MessageServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
 
    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
Mess2.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package ololo;
 
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class Mess2 extends HttpServlet {
    public String Text;
    public String Creater;
    public String Date;   
    public String SubF; 
    
    Mess2(String Textt, String Createrr, String Dataa, String SubFf) {
        this.Text = Textt;
        this.Creater = Createrr;
        this.Date = Dataa;
        this.SubF = SubFf;
    }
    
    public String getText(){
        return Text;
        }
    public String getCreater(){
        return Creater;
        }
    public String getDatte(){
        return Date;
        }
    public String getMess(){
     return "<b>" + this.Text + "</b> " + this.Creater;
    }
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet Mess2</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet Mess2 at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {            
            out.close();
        }
    }
 
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    
    @Override
    public String toString() {
    return ""  + this.Creater + " -<i> " + getDatte() +  "</i>";
        }  
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
 
    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
 
    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
15.04.2013, 20:37 13
таки дженерики. попробуйте не так:

Java
1
Hashtable SubForum1_Container = new Hashtable();
а так:

Java
1
Hashtable<String, Mess2> SubForum1_Container = new Hashtable<String, Mess2>();
тогда таблица будет возвращать не обджект, а ваш Mess2, в котором есть метод getDatte()
1
Deimoser
4 / 4 / 0
Регистрация: 16.10.2012
Сообщений: 39
15.04.2013, 20:50  [ТС] 14
AckiyBolt, огромное спасибо, помогло
0
maxii
1 / 1 / 1
Регистрация: 28.12.2011
Сообщений: 226
03.06.2013, 18:31 15
У меня такая ошибка: 7. cannot find symbol 8. Constructor BankAccount (int, java.lang.String, double, double, boolean, double) 9. location class BankAccount BankAccount accounts []={new BankAccount(1, "First", 100.00, 50.00, true, 0.00). // Сам пакет имеет 2 файла:1) В первом есть описание счета package Accounting / public class BankAccount {/ private Integer number;/ private String name;/ private double balance;/ private double amount;/ private boolean overdraft; /private double interest_rate;/ public BankAccount (перечень вышеперечислен ых полей через запятую) /{ потом присвоение через зис: this.number=number; во втором файле package Accounting; / public class work {/ public static void main ...{/ BankAccount accounts []={new BankAccount (...последняя строка ошибки.- то есть не понятно в чем ошибка при создание масива при создание обьектов класа описаных в первом файле что компил. без ошибок. Новая строка в коже позначена знаком /.
0
03.06.2013, 18:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2013, 18:31

Через некоторое время простоя приложения, не удается вызвать метод
Здравствуйте! У меня есть приложение, которое через определенный промежуток...

Для всех файлов из папки с одинаковым расширением, вызвать свой созданный метод
Здравствуйте! Как можно для всех файлов из папки с одинаковым расширением к...

Не удается вызвать свойство или метод со ссылкой на объект "null"
Есть 2 кадра, на которых 2 картинки, которые я преобразовал в кнопки Хочу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru