2012-05-21 144 views
2

我有这段Java代码片段。我在Java中的小白..<identifier>。 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 -------- 

回答

8

是的,这就是问题所在:

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

在一类的顶级水平,你只能有:

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

这是没有这些。如果您意味着来声明一个变量,你应该这样做:

​​3210

如果这你究竟想要做的,你应该解释你的意图。

编辑:一旦你已经修复了,这个编译器错误似乎非常清楚:

class Config is public, should be declared in a file named Config.java

有两个可能的修复此:

  • Config非公开
  • 移动它到一个叫Config.java的文件

要么解决这个错误(可能会揭示更多)。

+0

错误:类Config是公共的,应该在一个名为Config的文件中声明。 java –

+0

@cloudYturtle:你是否试过在编译器错误中清晰的指令? –

3

你在哪里声明你cfg变量?

我只看到作业。我认为这可能是原因。

Config cfg = new Config(); 

应该解决它。

+0

已经尝试过.. :(错误:类配置是公共的,应在名为Config.java –

+2

@cloudYturtle文件中声明:这只是意味着有*编译器错误告诉你到底该做什么 - 将你的Config类移动到名为Config.java的源文件中。 –

1

虽然你的意图不是很清楚,但我假设你想在任何其他变量之前创建cfg。 首先声明您的类Config为非公开或移动到文件Config.java。 在静态块中初始化cfg是有意义的。以下是一个可能的代码片段:

private static Config cfg = null;

private static String JDBC = null;

静态{

cfg = new Config(); 

    JDBC = cfg.getProperty("JDBC"); 

}