2

我有这段java代码。我是java中的菜鸟..

错误 :

<identifier> expected
cfg = new Config;

代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import java.io.*; 

import java.util.*;
import java.util.Properties;

public class Config 
{

   Properties configFile;
  public Config()
{
configFile = new java.util.Properties();
try {           
  configFile.load(this.getClass().getClassLoader().getResourceAsStream("config"));          
}catch(Exception eta){
    eta.printStackTrace();
}
  }

  public String getProperty(String key)
  {
 String value = this.configFile.getProperty(key);       
    return value;
  }

}



public class ClosureBuilder {

cfg = new Config();

private static String JDBC = cfg.getProperty("JDBC");
private static String URL = cfg.getProperty("URL");
private static String DIMENSION_TABLE = cfg.getProperty("DIMENSION_TABLE");
private static String CLOSURE_TABLE = cfg.getProperty("CLOSURE_TABLE");
private static String KEY = cfg.getProperty("KEY");
private static String PARENT_KEY = cfg.getProperty("PARENT_KEY");

private static Object TOP_LEVEL_PARENT_KEY = '0';


private Object topLevel = null;

private Set<Object> processedNodes;

private PreparedStatement aPst;
public static void main(String[] args) throws Exception {

----------- More code --------
4

3 回答 3

8

是的,这就是问题所在:

public class ClosureBuilder {
    cfg = new Config();
    ...
}

在顶级课程中,您只能拥有:

  • 实例初始化程序块 ( { ... })
  • 静态初始化块 ( static { ... })
  • 变量声明
  • 构造函数声明
  • 方法声明
  • 嵌套类型声明
  • 终结器声明

这些都不是。如果你打算声明一个变量,你应该这样做:

private Config cfg = new Config();

如果那不是你打算做的,你应该解释你的意图。

编辑:一旦你解决了这个问题,这个编译器错误似乎很清楚:

类 Config 是公共的,应该在一个名为 Config.java 的文件中声明

有两个潜在的解决方法:

  • Config公开
  • 将其移动到一个名为Config.java

两者都应该修复该错误(可能会揭示更多)。

于 2012-05-21T14:04:23.537 回答
3

你在哪里声明你的cfg变量?

我只看到任务。我认为这可能是原因。

Config cfg = new Config();

应该修复它。

于 2012-05-21T14:03:50.983 回答
1

尽管您的意图不是很清楚,但我假设您希望在任何其他变量之前创建 cfg。首先将您的类 Config 声明为非公共类或移至文件 Config.java。在静态块中初始化 cfg 是有意义的。下面是一个可能的代码片段:

私有静态配置 cfg = null;

私有静态字符串 JDBC = null;

静止的 {

  cfg = new Config();

  JDBC = cfg.getProperty("JDBC"); 

}

于 2012-05-21T17:38:31.093 回答