我有这个代码在dev-environment上返回信息。 但是,当我从罐子里跑出来时,代码并没有遵循它应该如何。
jar的名称是硬编码的,并希望得到它的名称,因为版本各不相同。
private static String getManifestUrlForClass(Class<?> cl) throws URISyntaxException, IOException {
URL url = cl.getResource(cl.getSimpleName() + ".class");
String s = url.toString();
System.out.println("URL Path: " + url.getPath());
System.out.println("URL File: " + url.getFile());
String path = MYCLASS.class.getProtectionDomain().getCodeSource().getLocation().getPath();
String revisionNumber = "";
String decodedPath = "";
JarFile jarfile = null;
try {
decodedPath = URLDecoder.decode(path, "UTF-8").replace("classes", "");
try {
jarfile = new JarFile(decodedPath + "MYJAR-ver.si.on.jar");
} catch (IOException e1) {
System.out.println("or Path to file cannot decode...");
e1.printStackTrace();
}
Manifest manifestFromJar = jarfile.getManifest(); //
System.out.println("Manifest from " + jarfile.getName().toString() + " = "
+ manifestFromJar.getMainAttributes().getValue("Revision-Number").toString());
revisionNumber = manifestFromJar.getMainAttributes().getValue("Revision-Number").toString();
} catch (IOException e) {
System.out.println(url.getFile().toString() + "is not jar");// TODO Auto-generated catch block
System.out.println("or Path to file cannot decode...");
e.printStackTrace();
}
return revisionNumber;
}
MYJAR将始终与| ver.si.on |相同最有可能的变化和硬编码名称不是最佳做法。
我想做什么? 1.获取MYJAR-ver.si.on.jar的位置,无论它位于何处 2.使用该位置访问它的Manifest 3.使用清单提取修订号 4.在ui中显示修订号
我还不熟悉java并且不太了解它。我已经阅读了有关使用&#34; rsrc:&#34;到达jar,或类似于https://stackoverflow.com/a/40680501/6756124的东西。