目前,我通过以下步骤从 src 文件到 jar 进行一些运行时编译:
首先:在目录和子目录中生成源文件
/main
/submain1
/submain2
第二:编译代码(目前所有.class文件都进入这个目录)
/builddir
第三:从.class文件生成jar到目标文件夹
/target
编译由Java ToolProviders Javacompiler完成
ArrayList<File> files1 = getSourceFiles();
Iterable<? extends JavaFileObject> compilationUnits1 = fileManager.getJavaFileObjectsFromFiles(files1);
JavaCompiler.CompilationTask task = compiler.getTask(null ,fileManager , null, optionList, null, compilationUnits1 );
boolean compiled = task.call();
现在我的第一个问题是,将所有 .class 文件分成不同的编译单元并重建与源文件相同的目录结构会更好吗?
如果是这样,该怎么做?
最佳答案
Now my first question is, would it be better to separate all .class files into different compilation units and rebuild the same directory structure as the source files have?
.class 文件的输出结构必须反射(reflect)源文件中使用的包名称。 AFAIK 源文件的文件夹结构并不重要。
如果您在 .jar 文件中使用任何其他结构,类加载器将无法找到类。
所以你的问题的答案是否。
关于java.class 文件的目录结构与源文件相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33252472/