[英]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.