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という名前のファイルで宣言する必要があります

これには2つの潜在的な修正があります。

  • 非公開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を初期化することは理にかなっています。以下は可能なコードスニペットです:

private static Config cfg = null;

プライベート静的文字列JDBC=null;

静的{

  cfg = new Config();

  JDBC = cfg.getProperty("JDBC"); 

}

于 2012-05-21T17:38:31.093 に答える