私は現在、会社のプロジェクトに取り組んでおり、Microsoft からオープンソースの家系図プロジェクトを取得しました (ソース関数は、 Family HistoryとGForgeのソース コードで見つけることができます)。ずっと発行します。単純な例外エラーだったので、ほとんどのコンパイル エラーは解決しましたが、これはまだ解決できていません。私は問題をグーグルで検索し、多くの同様の解決策を見つけましたが、どれもうまく機能していないようです. さらに情報が必要な場合はお知らせください。提供できるよう最善を尽くします。とはいえ、私はまだJavaの初心者です。
コンパイラ (Apache Maven 2.2.1) で次のエラーが表示されます。
C:\mfhp-2.4.0\services\src\main\java\gov\hhs\fhh\service\locator\JndiUtil.java:
[68,4] variable context might not have been initialized
ファイルのコードは次のとおりです。
public final class JndiUtil {
private static final Logger LOG = Logger.getLogger(JndiUtil.class);
private static final String RESOURCE_NAME = "jndi.properties";
private static JndiUtil theInstance = new JndiUtil();
private final InitialContext context;
private JndiUtil() {
try {
Properties props = getProperties();
context = new InitialContext(props);
} catch (NamingException e) { //This was a fix I did
LOG.error("Unable to initialize the JNDI Util.", e);
throw new IllegalStateException(e);
} catch (IOException ioe) { //This was a fix I did
LOG.error("IOException", ioe);
}
}
/**
* @return jndi (& jms) properties
* @throws IOException on class load error
*/
public static Properties getProperties() throws IOException {
Properties props = new Properties();
props.load(JndiUtil.class.getClassLoader().getResourceAsStream(RESOURCE_NAME));
return props;
}
/**
* @param name name to lookup
* @return object in default context with given name
*/
public static Object lookup(String name) {
return lookup(theInstance.context, name);
}
/**
* @param ctx context
* @param name name to get
* @return object in contect with given name
*/
public static Object lookup(InitialContext ctx, String name) {
try {
return ctx.lookup(name);
} catch (NamingException ex) {
//LOG.error("------------------Here is what's in the context--(looking for " + name + ")----------");
LOG.error("------------------Error looking up ctx context for: " + name + ")----------");
//dump(ctx, 0);
//LOG.error("-----------------------------------------------------------");
throw new IllegalStateException(ex);
}
}
/*
* Method taken out to avoid looping messages into log file
private static void dump(javax.naming.Context ctx, int indent) {
try {
NamingEnumeration<NameClassPair> en = ctx.list("");
while (en.hasMore()) {
NameClassPair ncp = en.next();
String cn = ncp.getClassName();
String n = ncp.getName();
LOG.info("\t\t\t\t\t\t".substring(0, indent) + n + " : " + cn);
try {
Object o = ctx.lookup(n);
if (o instanceof Context) {
dump((Context) o, indent + 1);
}
} catch (Exception e) {
LOG.info(e);
}
}
} catch (NamingException ex) {
LOG.info(ex);
}
}
*/
}