使用Java进行奇怪的eclipse编译错误

时间:2011-12-07 07:05:51

标签: java eclipse java-ee servlets

我在下面的代码块中使用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 个答案:

答案 0 :(得分:10)

您收到此错误是因为您不能将赋值语句和声明写为类中的2个语句(在任何方法或带有类变量的静态块之外)。

所以你的错误实际上是在这个声明中:

rb1 = ResourceBundle.getBundle("connection_config");

不能在没有周围静态/方法块的情况下在类中编写这样的语句。不能在任何方法或任何初始化块(静态或非静态)之外写入。因此,您必须将2个语句合并为1个,如:

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

答案 1 :(得分:6)

您可能需要替换此

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");

之类的语句