public LessEngine(LessOptions options) {
try {
logger.debug("Initializing LESS Engine.");
classLoader = getClass().getClassLoader();
URL less = options.getLess();
URL env = classLoader.getResource("META-INF/env.js");
URL engine = classLoader.getResource("META-INF/engine.js");
URL cssmin = classLoader.getResource("META-INF/cssmin.js");
Context cx = Context.enter();
logger.debug("Using implementation version: " + cx.getImplementationVersion());
cx.setOptimizationLevel(9);
Global global = new Global();
global.init(cx);
scope = cx.initStandardObjects(global);
cx.evaluateReader(scope, new InputStreamReader(env.openConnection().getInputStream()), env.getFile(), 1, null);
cx.evaluateString(scope, "lessenv.charset = '" + options.getCharset() + "';", "charset", 1, null);
cx.evaluateString(scope, "lessenv.css = " + options.isCss() + ";", "css", 1, null);
cx.evaluateReader(scope, new InputStreamReader(less.openConnection().getInputStream()), less.getFile(), 1, null);
cx.evaluateReader(scope, new InputStreamReader(cssmin.openConnection().getInputStream()), cssmin.getFile(), 1, null);
cx.evaluateReader(scope, new InputStreamReader(engine.openConnection().getInputStream()), engine.getFile(), 1, null);
compileString = (Function) scope.get("compileString", scope);
compileFile = (Function) scope.get("compileFile", scope);
Context.exit();
} catch (Exception e) {
logger.error("LESS Engine intialization failed.", e);
}
}