Lese Wie kann ein Clojure-Programm seine eigene MANIFEST.MF finden (vorausgesetzt, es ist in einer JAR-Datei verpackt).Clojure-Programm seines eigenen MANIFEST.MF
Ich versuche, aus meinem „-main“ -Funktion zu tun, aber ich kann eine Klasse im folgenden Code zu verwenden, nicht finden:
(.getValue
(..
(java.util.jar.Manifest.
(.openStream
(java.net.URL.
(str
"jar:"
(..
(class **WHAT-GOES-HERE**)
getProtectionDomain
getCodeSource
getLocation)
"!/META-INF/MANIFEST.MF"))))
getMainAttributes)
"Build-number"))
Dank.
Danke, das war hilfreich. Ich habe ein bisschen Refactoring gemacht, weil ich davon besessen bin. Hier ist, was ich am Ende mit: (defn get-Funktion-Standort [sym] (.. (Klasse sym) getProtectionDomain getCodeSource getLocation)) (defn get-Manifest-Attribute [] (lass [location (get-funktion-location get-manifest-attribute)] (when-not (null? location) (-> (str "jar:" location "! /META-INF/MANIFEST.MF") (URL.) (.openStream) (Manifest.) (.getMainAttributes))))) –
Korrektur: Übergeben des Symbols an die Funktion wurde nicht richtig funktionieren. Am Ende habe ich get-function-location get-location umbenannt und get-location an die Klasse übergeben. –