我在下面的代码块中使用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.
知道为什么会这样吗?我如何解决这个问题会有所帮助。
答案 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");
。