protected override StageResult Init() { if (!Success(base.Init(), out StageResult r)) { return(r); } if (JavaHome.IsEmpty()) { if (AdditionalOptions.ContainsKey("JAVA_HOME")) { JavaHome = (string)AdditionalOptions["JAVA_HOME"]; } else if ((JavaHome = Environment.GetEnvironmentVariable("JAVA_HOME")).IsEmpty()) { Error("The java-home or JAVA_HOME option was not specified and the JAVA_HOME environment variable does not exist."); return(StageResult.INVALID_OPTIONS); } } if (!Directory.Exists(JavaHome)) { Error("The Java home directory specified does not exist: {0}.", JavaHome); return(StageResult.INVALID_OPTIONS); } if (ClassPath.IsEmpty()) { if (AdditionalOptions.ContainsKey("STANFORD_CLASSIFIER_JAR")) { ClassPath = (string)AdditionalOptions["STANFORD_CLASSIFIER_JAR"]; } else if ((ClassPath = Environment.GetEnvironmentVariable("STANFORD_CLASSIFIER_JAR")).IsEmpty()) { Error("The class-path option was not specified and the STANFORD_CLASSIFIER_JAR environment variable does not exist."); return(StageResult.INVALID_OPTIONS); } } if (!File.Exists(ClassPath)) { Error("The .jar archive path specified does not exist: {0}.", ClassPath); return(StageResult.INVALID_OPTIONS); } if (BinaryLogisticClassifier && !AdditionalOptions.ContainsKey("useBinary")) { AdditionalOptions.Add("useBinary", true); } if (WithKFoldCrossValidation) { ClassifierProperties.Add("crossValidationFolds", 10); Info("Using 10-fold cross validation"); } Command version = new Command(Path.Combine(JavaHome, "bin"), "java", "-version"); Task c = version.Run(); if (!version.Started) { Error("Could not detect Java version."); return(StageResult.FAILED); } else { c.Wait(); if (c.IsCompleted && version.Success) { Info(version.ErrorText.Replace(Environment.NewLine, " ")); } if (c.IsCompleted && !version.Success) { Error("Could not detect Java version: {0}", version.OutputText); return(StageResult.FAILED); } } foreach (KeyValuePair <string, object> kv in AdditionalOptions) { if (ClassifierProperties.ContainsKey(kv.Key)) { ClassifierProperties[kv.Key] = kv.Value; } else { ClassifierProperties.Add(kv.Key, kv.Value); } Info("Using additional classifier property {0}={1}.", kv.Key, kv.Value); } if (ClassifierProperties.ContainsKey("useNB")) { ClassifierProperties.Remove("useBinary"); } return(StageResult.SUCCESS); }