0
我有一個prorgam這就是產生源代碼和想要的Java的運行期執行期間等來編譯此源代碼:HOWTO正確添加編譯的類文件與封裝結構罐子
generateSource()
compileSource()
我使用JavaCompiler進行從ToolProvider :
ArrayList<String> optionList = new ArrayList<String>();
System.out.println("Retrieve dependendcy Jars");
ArrayList<File> jarfiles = getJarFiles(this.libdir);
String libpath = System.getProperty("java.class.path") + convertJarFilesToClassPath(jarfiles);
optionList.addAll(Arrays.asList("-d", this.genClassDir));
optionList.addAll(Arrays.asList("-classpath", libpath));
ArrayList<File> files1 = getSourceFiles(this.genCodeDir);
Iterable<? extends JavaFileObject> compilationUnits1 = fileManager.getJavaFileObjectsFromFiles(files1);
JavaCompiler.CompilationTask task = compiler.getTask(null ,fileManager , null, optionList, null, compilationUnits1);
task.call();
現在重要的一行是我在選項列表中添加-d classdirectory的位置。
我有這個genClassDir/gen /類,其中我所有的.class文件都包括在內的子目錄。
現在我的jar文件中的問題是,類文件在包結構之前有genClassDir作爲前綴。
./gen/classes/foo/
./gen/classes/foo/bar/
代替
/foo
/foo/bar
或不帶斜線。
我從How to use JarOutputStream to create a JAR file?
第一個答案包裝罐子就像是有辦法我只得到了類文件的封裝結構,我的罐子?
我在想這個,但是那麼JarEntries仍然會被發現? – Gobliins
我不知道,說實話,我無法測試它。也許你應該嘗試一下,然後看看它在哪裏? – Soana
確定它仍然在編譯,當我設法運行所有依賴我可以接受這個答案 – Gobliins