预期。 java的

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

错误:

 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 processedNodes; private PreparedStatement aPst; public static void main(String[] args) throws Exception { ----------- More code -------- 

是的,这是问题所在:

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

在课程的顶层,您只能:

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

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

 private Config cfg = new Config(); 

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

编辑:一旦你修复了这个,这个编译错误似乎很清楚:

class Config是public,应该在名为Config.java的文件中声明

有两种可能的解决方法:

  • 使Config非公开
  • 将其移动到名为Config.java的文件

要么应该修复该错误(可能会显示更多错误)。

你在哪里宣布你的cfg变量?

我只看到作业。 我想这可能就是原因。

 Config cfg = new Config(); 

大声解决它。

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

private static Config cfg = null;

private static String JDBC = null;

静态的 {

  cfg = new Config(); JDBC = cfg.getProperty("JDBC"); 

}