Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 清单规范版本不可见_Java_Eclipse_Jar_Packages - Fatal编程技术网

Java 清单规范版本不可见

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

我创建了一个jar文件,并添加了一个包含版本信息的清单。 在单独的测试中,我可以很好地检索到这些信息

然而,“有时”这不起作用。 我从该jar文件中加载了一个类的包对象,但是这个包没有清单中提供的版本信息

这是因为失败的测试是在eclipse的debug中运行的,还是当测试代码使用与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
  }
}
除了最终的答案“是的,这就是问题所在”,我想得到一些如何最终避免这种情况的提示


通常,最好将测试与测试代码放在同一个包中,以便访问包私有对象,不是吗?

您是说从命令行运行时测试成功(显示
规范版本
),但从Eclipse中启动时失败?如果是这样,原因很可能是Eclipse没有用
MANIFEST.MF
构建JAR,而是将
bin
文件夹中的原始
.class
文件放在类路径上。@Andreas:不,我不是这么说的。我在Eclipse测试中确实构建并使用了一个jar文件。还没有在Eclipse之外运行测试。(复活节后我会试试)节日快乐,谢谢你的评论。最终澄清:测试不是jar的一部分。