簡體   English   中英

“jar”命令何時拒絕將類添加到.jar文件中?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM