2013-06-21 3 views
0

Я написал java servlet для простой электронной книги, и по какой-то причине я не понимаю, почему она не компилируется. Ниже я вставил часть кода, который дает мне ошибку:Ошибка JSP в java

public void int(ServletConfig conf) throws ServletException { 
     super.init(conf); 
} 

Ошибки, которые возникают, приведены ниже:

  1. <identifier> expected -> (public void ^int(Servlet.....)...)
  2. '(' expected -> piblic void **i**nt
  3. illegal start of type -> public void int**(**Servlet....
  4. ';' expected -> public void int(ServletConfig^conf)...
  5. <identifier> expected -> public void int(ServletConfig conf**)**...
  6. illegal start of type -> public void int(ServletConfig conf) **throws**....
  7. ';' expected -> public void int(ServletConfig conf) throws ServletException^

Я не понимаю, это должно работать. При необходимости я отправлю весь исходный файл.

Любые советы сделают.

+0

, пожалуйста, напишите полный исходный файл –

+0

@shreyanshjogi Не нужно, ошибка ясна. – BackSlash

+0

@Manolis Tsilikidis, поскольку я знаю, что не рекомендуется переопределять метод init с аргументами. Если вам нужно что-то сделать, прежде чем сервлет начнет работать, переопределите метод init без аргументов. –

ответ

2
public void **init**(ServletConfig conf) throws ServletException { 
     super.init(conf); 
} 

Это должно быть init, а не int. Вы вызываете метод init суперкласса из этого метода init.

Это один из способов получить доступ к объекту ServletConfig в вашем сервлете.

Другой путь вы можете сделать это по телефону

ServletConfig conf = getServletConfig(); 

метод инициализации вызываются, когда сервлет экземпляр будет загружен.

+0

В этом была проблема, спасибо. Я действительно новичок в JSP и просто пытаюсь сделать фрагмент кода, который я нашел для работы. Теперь у меня другая проблема. Я компилирую, и он снова вызывает ошибку, но он связан с «пакетом javax.servlet».Как я могу скомпилировать его и добавить связанный lib в компиляцию? Я пытаюсь использовать «-cp; (каталог библиотеки)», но это не сработает ... - Manolis Tsilikidis только что редактирует – manosagent

2

public void int can not done выбрать либо void, либо int; вы должны переименовать имя метода, потому что int является сохраненным словом

+0

'init' предположительно –

+0

@JoopEggen init проблематичен, он используется во многих сложных объектах, а hes имеет дело с сервлетами, поэтому ад использует init много; самоназванное имя было бы разумным imo – Infested

+0

в любом случае, если это ответило на ваш вопрос id, как получить «Accepted» manolis, спасибо. – Infested

2

Вы не можете использовать ключевые слова, такие как int как идентификаторы в Java. Это характерно для всего кода на Java. Я предполагаю, что вы пытаетесь переопределить метод init(ServletConfig):

public void init(ServletConfig conf) throws ServletException { 
    super.init(conf); 
} 

Это хорошо для учебных целей, но в идеале должны переопределить без аргументов init() в вашем Servlet чтобы вы сделать то, что делает жизненный цикл сервлета забарахлить. Не переопределяйте init(ServletConfig), если это абсолютно необходимо.

0

когда вы определяете ваш метод как

public void int(ServletConfig conf) 

общественного: достижимости

аннулируются: тип возвращаемого

INT: название метода

ServletConfig: тип параметра метод принимает

конф: параметр, переданный

теперь не будет ничего плохого, и метод работает отлично

но ява зарезервировал ключевые слова, которые не могут быть использованы для любых других целей

в вашем случае INT, вы используете это как имя метода,

но INT является зарезервированным клавиатура для определения переменной типа Int

далее говоря

в вашем сервлет жизненного цикла

у вас есть три метода,

1: INIT

2: обслуживание

3: dest Руа

ясно вы пытаетесь инициализировать сервлет, вызывая метод инициализации

Эрро вы столкнулись это просто TYPO ошибка,

просто переименовать метод initilize из Int в инициализации