项目获取版本号的方式,是通过定义类的static方法获取的
public class TestVersion {
private TestVersion() {
// this class is not instantiable
}
/**
* Return the full CAS version string.
*
* @see Package#getImplementationVersion
*/
public static String getVersion() {
return TestVersion.class.getPackage().getImplementationVersion();
}
}
1.分析:这里因为是定义了父包和子包的。首先观察了web包,发现META-INF中是空的。当把MANIFEST.MFcopy到META-INF目录下,就可以正常的获取到产品的版本号了。
2.解决方向:为什么web包打包,META-INF文件夹为空。
3.结果:没有任何进展,也没有任何说明为什么这个包为空。
4.重新分析原因:首先注意到TestVersion.class并不是web包下的类。那么为什么会去web包中获取这个版本号呢。观察了TestVersion.java的目录结构,放在了根目录下,web包的根目录和这边一致。
5.尝试解决:将TestVersion.java移到非根目录下,重新打包测试。
6.结果:成功获取到版本号。
总结:问题总是出在意想不到的地方。