我在使用 Apache commons 配置读取 ini 文件时遇到问题。我附上了进口商品,以防我遗漏了一些东西。下面是我在 stackoverflow 上找到的一个示例,据我所知,没有其他示例可供查看。问题是iniObj
。使用 Eclipse,它以红色突出显示。
如果我初始化变量,new "HierarchicalINIConfiguration(iniFile);
生气并想添加一个 try/catch 或 throws ......这应该没问题......但是 try/catch 或 throws 生气并说“不能抛出 ConfigurationException 类型的异常; 异常类型必须是 Throwable 的子类。”
这让我想到了这个问题。我添加了 commons lang 3.1。我有 commons config 1.9,commons collections 3.2.1。公共日志记录 1.1.1 也是如此。我也用 commons config 1.8 和 lang 2.6 试过这个。现在我收到一个新错误“com.toolbox.dev.ReadIni.main(ReadIni.java:28) 处的线程“main”java.lang.NullPointerException 中的异常”您可以在我尝试进行调整后看到下面的新代码并解决错误。
我的代码:
import java.util.Iterator;
import java.util.Set;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalINIConfiguration;
import org.apache.commons.configuration.SubnodeConfiguration;
public static void main(String[] args) throws ConfigurationException {
String iniFile = "file.ini";
HierarchicalINIConfiguration iniConfObj = new HierarchicalINIConfiguration(iniFile);
// Get Section names in ini file
Set setOfSections = iniConfObj.getSections();
Iterator sectionNames = setOfSections.iterator();
while(sectionNames.hasNext()) {
String sectionName = sectionNames.next().toString();
HierarchicalINIConfiguration iniObj = null;
SubnodeConfiguration sObj = iniObj.getSection(sectionName);
Iterator it1 = sObj.getKeys();
while (it1.hasNext()) {
// Get element
Object key = it1.next();
System.out.print("Key " + key.toString() + " Value " +
sObj.getString(key.toString()) + "\n");
}
}
}
堆栈溢出的原始代码:
import java.util.Iterator;
import java.util.Set;
import org.apache.commons.configuration.HierarchicalINIConfiguration;
import org.apache.commons.configuration.SubnodeConfiguration;
public class ReadIni {
public static void main(String[] args) {
String iniFile = "";
HierarchicalINIConfiguration iniConfObj = new HierarchicalINIConfiguration(iniFile);
// Get Section names in ini file
Set setOfSections = iniConfObj.getSections();
Iterator sectionNames = setOfSections.iterator();
while(sectionNames.hasNext()) {
String sectionName = sectionNames.next().toString();
SubnodeConfiguration sObj = iniObj.getSection(sectionName);
Iterator it1 = sObj.getKeys();
while (it1.hasNext()) {
// Get element
Object key = it1.next();
System.out.print("Key " + key.toString() + " Value " +
sObj.getString(key.toString()) + "\n");
}
}