Странная ошибка компиляции затмения с Java - PullRequest
2 голосов
/ 07 декабря 2011

Я получаю эту странную ошибку компиляции с eclipse в следующем блоке кода. Я включил необходимые банки и также попытался перезапустить затмение, но безрезультатно.

 public class ControlServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
ResourceBundle rb1;// error on this line
rb1 = ResourceBundle.getBundle("connection_config");
Logger log = LoggerFactory.getLogger(ControlServlet.class);

Отображаемое сообщение об ошибке:

Multiple markers at this line
- Syntax error on token ";", , expected
- Watchpoint:ControlServlet [access and 
 modification] - rb1.

Есть идеи, почему это может происходить? И как я мог бы обойти это было бы полезно.

Ответы [ 2 ]

10 голосов
/ 07 декабря 2011

Вы получаете эту ошибку, потому что вы не можете записать оператор присваивания и объявление как 2 оператора в классе (вне любого метода или статического блока с переменными класса).

Итак, ваша ошибка на самом деле в этом утверждении:

rb1 = ResourceBundle.getBundle("connection_config");

Вы не можете написать такое утверждение в классе без окружения статического / методического блока. не можете писать вне какого-либо метода или любого блока инициализации (статического или нестатического). Таким образом, вы должны объединить ваши 2 утверждения в 1, как:

ResourceBundle rb1 = ResourceBundle.getBundle("connection_config");
6 голосов
/ 07 декабря 2011

Возможно, вам придется заменить это

ResourceBundle rb1;// error on this line
rb1 = ResourceBundle.getBundle("connection_config");

с этим

ResourceBundle rb1 = ResourceBundle.getBundle("connection_config");

В Java у нас могут быть только операторы объявления переменных, блок инициализации (статический и нестатический) и определения методов внутри класса напрямую. Все остальные операторы, такие как операторы присваивания, управляющие операторы и т. Д., Должны находиться внутри блока инициализации или внутри определения метода.

Здесь rb1 = ResourceBundle.getBundle("connection_config"); - это оператор присваивания, который нельзя помещать непосредственно в класс. Вот почему мы должны объединить декларацию и операторы присваивания, например, ResourceBundle rb1 = ResourceBundle.getBundle("connection_config");.

...