2014-10-20 68 views
1

当我使用SnakeYaml 1.14解析config.yaml时,我得到一个“Class not found exception”。以下是用于解析的代码。我已经使用maven来构建这个项目。SnakeYaml类没有发现异常

public class AppConfigurationReader 
{ 
    private static final String CONFIG_FILE = "config.yaml"; 
    private static String fileContents = null; 
    private static final Logger logger = LoggerFactory.getLogger(AppConfigurationReader.class); 

    public static synchronized AppConfiguration getConfiguration() { 
     return getConfiguration(false); 
    } 

    public static synchronized AppConfiguration getConfiguration(Boolean forceReload) { 
     try { 
      Yaml yaml = new Yaml(); 

      if(null == fileContents || forceReload) { 
       fileContents = read(CONFIG_FILE); 
      } 
      yaml.loadAs(fileContents, AppConfiguration.class); 
      return yaml.loadAs(fileContents, AppConfiguration.class); 
     } 
     catch (Exception ex) { 
      ex.printStackTrace(); 
      logger.error("Error loading fileContents {}", ex.getStackTrace()[0]); 
      return null; 
     } 
    } 

    private static String read(String filename) { 
     try { 
      return new Scanner(new File(filename)).useDelimiter("\\A").next(); 
     } catch (Exception ex) { 
      logger.error("Error scanning configuration file {}", filename); 
      return null; 
     } 
    } 
} 

回答

0

我发现了类似的错误,但是dumping a file

您可以在yaml.load指令中编写类的完整名称。

例如,如果AppConfiguration.classorg.example.package1,你会写是这样的:

yaml.loadAs(fileContents, org.example.package1.AppConfiguration.class);