[英]When will the “jar” command refuse to add a class to a .jar file?
我总共有204个班级(大多数班级都是班级班级)。 几个月来,我一直在使用SCons构建正常(SCons只调用jar命令)。
出于某种原因,它停止为特定类添加最后一个内部类。 例如,假设我有以下类:
class1
class2
class3
class4
class5
class6
...
class79
class80
在最后一次改变之前,SCons会把一切都搞好。 但是现在......它特别没有将class80添加到它的jar命令中。 (我在jar命令中看到了class80的遗漏)。
是否存在jar命令忽略某些类的实例?
-----------编辑。 我找到了罪魁祸首。 出于某种原因,这个内部课程无法识别我的SCons!
vehicleFilter = new RowFilter<Object, Object>(){
public boolean include(Entry<? extends Object, ? extends Object> entry) {
{return false;}
};
你需要在你的env.Java()
调用中添加JAVAVERSION='1.6'
作为参数:
env.Java(target='classes', source='src', JAVAVERSION='1.6')
如果没有这个,如果您使用当前的javac
,SCons将无法确定匿名内部类的正确名称,因此当这些错误的类文件名传递给jar
,它将失败。
您可以传递目录,而不是将完整的类文件列表传递给Jar命令。 这避免了SCons的java解析器的问题,因为SCons将扫描目录中的文件并查找它找到的任何内容。
像下面这样的东西会将“src”中的文件编译到目录“classes”中,然后从“classes”的内容创建一个jar:
env = Environment(tools=['javac', 'jar'])
env.Java(target='classes', source='src')
env.Jar(target='foo.jar', source=['classes', 'Manifest.txt'],
JARCHDIR='$SOURCE')
清单文件“Manifest.txt”位于项目的根目录中。 唯一的要求是它以文本“Manifest-Version”开头。
SCons可以通过列出jar上的所有类来构造命令行,这可能会变得太长(平台限制或SCons内部的启发式)。
您需要查看SCons包内部以查看发生了什么。
你不只是使用蚂蚁的任何特殊原因?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.