![](/img/trans.png)
[英]Eclipse Plug-in development. Can i use an already existing jar file with my plug in?
[英]in eclipse plug-in, programmatically save new .java files to an existing jar file in the workspace
我正在為Eclipse Standard/SDK
Kepler編寫一個插件,以向本科生程序員在處理Java編程作業時提供診斷反饋。 該學生可以按自己希望的次數運行我的插件,以查看他的代碼是否觸發了有關他可能要更改的不良編程實踐的任何消息。
每次學生調用該插件時,我都需要在該學生的項目中保存所有.java文件的副本以及一個包含該插件產生的診斷反饋的文本文件。 我不想讓學生使用文件導出向導,因此我想出了如何使用org.eclipse.jdt.ui.jarpackager
的JarPackageData
和JarWriter3
類以編程方式創建jar文件的方法。 這是我第一次保存文件,但我不想每次學生運行插件時都創建一個新的jar。 當學生第二次(第三,第四…)運行我的插件時,我想向已經制作的jar中添加更多文件,以便最終得到一個包含該學生使用情況的完整記錄的jar文件。我的插件。
JarWriter3
創建一個新的jar文件,但不提供任何添加到已經存在的jar中的方法。 到目前為止,我都搜索了Eclipse文檔和stackoverflow歸檔文件,但沒有成功。 上一個問題的一個答案解釋了如何使用java.util.jar.JarEntry
和JarOutputStream
類編寫jar文件,但是我認為如果確實有可以解決我的問題的方法,我應該堅持使用Eclipse類提供的功能。
JarWriter3
本質上只是JarOutputStream
一個相當薄的包裝器,例如,構造函數使用以下命令打開jar輸出流:
if (fJarPackage.usesManifest() && fJarPackage.areGeneratedFilesExported()) {
Manifest manifest = fJarPackage.getManifestProvider().create(fJarPackage);
fJarOutputStream = new JarOutputStream(new BufferedOutputStream(new FileOutputStream(fJarPackage.getAbsoluteJarLocation().toFile())), manifest);
} else
fJarOutputStream = new JarOutputStream(new BufferedOutputStream(new FileOutputStream(fJarPackage.getAbsoluteJarLocation().toFile())));
所以我傾向於只使用標准的Java JarOutputStream
和JarEntry
。
如果要將jar保存在工作區中,則在編寫jar以便使其能夠被Eclipse識別后,將需要調用IFile.refreshLocal
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.