val class_loader: ClassLoader =
{ val this_class_loader = this.getClass.getClassLoader if (dynamic_jars.isEmpty) this_class_loader else { val dynamic_jars_url = dynamic_jars.map(file => File.url(file).java_url) new URLClassLoader(dynamic_jars_url.toArray, this_class_loader) { overridedef finalize(): Unit = { for (jar <- dynamic_jars) { try { jar.delete() } catch { case _: Throwable => }
}
}
}
}
}
privatedef init_services(where: String, names: List[String]): List[Classpath.Service_Class] = { for (name <- names) yield { def err(msg: String): Nothing =
error("Bad Isabelle/Scala service " + quote(name) + " in " + where + "\n" + msg) try { Class.forName(name, true, class_loader).asInstanceOf[Classpath.Service_Class] } catch { case _: ClassNotFoundException => err("Class not found") case exn: Throwable => err(Exn.print(exn))
}
}
}
val services: List[Classpath.Service_Class] =
{ val variable = "ISABELLE_SCALA_SERVICES" val services_env =
init_services(quote(variable), space_explode(':', Isabelle_System.getenv_strict(variable))) val services_jars =
jars.flatMap(jar =>
init_services(File.standard_path(jar),
isabelle.setup.Build.get_services(jar.toPath).asScala.toList))
services_env ::: services_jars
}
def make_services[C](c: Class[C]): List[C] = for { c1 <- services if Library.is_subclass(c1, c) } yield c1.getDeclaredConstructor().newInstance().asInstanceOf[C]
}
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.17Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-05-02)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.