Java 清单规范版本不可见
我创建了一个jar文件,并添加了一个包含版本信息的清单。 在单独的测试中,我可以很好地检索到这些信息 然而,“有时”这不起作用。 我从该jar文件中加载了一个类的包对象,但是这个包没有清单中提供的版本信息 这是因为失败的测试是在eclipse的debug中运行的,还是当测试代码使用与jar文件相同的包时发生的 jar文件:Java 清单规范版本不可见,java,eclipse,jar,packages,Java,Eclipse,Jar,Packages,我创建了一个jar文件,并添加了一个包含版本信息的清单。 在单独的测试中,我可以很好地检索到这些信息 然而,“有时”这不起作用。 我从该jar文件中加载了一个类的包对象,但是这个包没有清单中提供的版本信息 这是因为失败的测试是在eclipse的debug中运行的,还是当测试代码使用与jar文件相同的包时发生的 jar文件: package org.mycomp.test; public class C { } 我的测试: package org.mycomp.test; // is this
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
}
}
除了最终的答案“是的,这就是问题所在”,我想得到一些如何最终避免这种情况的提示
通常,最好将测试与测试代码放在同一个包中,以便访问包私有对象,不是吗?您是说从命令行运行时测试成功(显示
规范版本
),但从Eclipse中启动时失败?如果是这样,原因很可能是Eclipse没有用MANIFEST.MF
构建JAR,而是将bin
文件夹中的原始.class
文件放在类路径上。@Andreas:不,我不是这么说的。我在Eclipse测试中确实构建并使用了一个jar文件。还没有在Eclipse之外运行测试。(复活节后我会试试)节日快乐,谢谢你的评论。最终澄清:测试不是jar的一部分。