我创建一个jar文件并添加包含版本信息的清单。 在单独的测试中,我可以很好地检索这些信息。
"有时"但是,这不起作用。 我从该jar文件中获取了一个类的包对象,但是该包没有清单中提供的版本信息。
这是因为失败的测试是在eclipse的调试中运行的,还是在测试代码使用与jar文件提供的相同的包时发生?
jar文件:
package org.mycomp.test;
public class C { }
我的测试:
package org.mycomp.test; // is this the problem?
class test_C {
public static void main(String[] args) {
org.mycomp.test.C c = Class.forName("org.mycomp.test.C").getInstance();
// org.mycomp.test.C c = new org.mycomp.test.C(); // same problem
Package p = c.getClass().getPackage();
System.out.println (p.getSpecificationVersion()); // null
}
}
除了最终的回答"是的,这就是问题",我想得到一些提示如何最终避免这种情况。
通常,为了获得对包私有对象的访问权限,我们希望在与测试代码相同的包中进行测试,不是吗?