列出由javac编译的Java源文件

列出由javac编译的Java源文件,java,classpath,javac,Java,Classpath,Javac,我在*.Java文件中有一系列小型Java项目类,它们通过类路径引用大型代码库。代码存储库包括大量的*.java文件、源文件和一些*.jar文件。我想将任何给定的项目从其目录中分离出来,以便打包和分发它 给定一个包含main方法作为给定项目起点的Java类,如何在类路径上列出用于编译给定Java类的所有文件,如*.Java文件或*.jar文件?javac能否在编译期间生成包含足够详细信息的日志?您能否单独使用JavaAPI并以编程方式检查用于编译的源文件 javac能否在编译期间生成包含足够详细

我在*.Java文件中有一系列小型Java项目类,它们通过类路径引用大型代码库。代码存储库包括大量的*.java文件、源文件和一些*.jar文件。我想将任何给定的项目从其目录中分离出来,以便打包和分发它

给定一个包含main方法作为给定项目起点的Java类,如何在类路径上列出用于编译给定Java类的所有文件,如*.Java文件或*.jar文件?javac能否在编译期间生成包含足够详细信息的日志?您能否单独使用JavaAPI并以编程方式检查用于编译的源文件

javac能否在编译期间生成包含足够详细信息的日志

具有-verbose选项,该选项提供类路径上的JAR以及编译的Java文件

javac -verbose <filepath>

Java类是从单个.Java文件中单独编译的。您是在问如何查找类的依赖项吗?“列出在类路径上找到并由javac编译的Java源文件”:很简单。没有一个源文件不是通过类路径定位的。是的,这是关于在编译给定类和类路径时查找类的依赖项。EJP的优点很好。在类路径上可以找到许多不同的文件,因此我们需要通过记录javac的活动和检查依赖项来查看哪些文件正在使用。是否有人愿意推荐一个依赖项检查工具?否:在编译过程中,通过类路径只能找到.class文件。不是“很多不同的文件”。好主意,瓦桑。我想知道如果我们添加日志选项-Xstdout filename,我们是否可以解析日志文件并找到给定类的所有编译时依赖项,以及用于编译的所有源文件?
[parsing started RegularFileObject[Dummy.java]]
[parsing completed 10ms]
[search path for source files: .]
[search path for class files: C:\Program Files\Java\jdk1.7.0_80\jre\lib\resources.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\rt.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\sunrsasign.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\jsse.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\jce.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\charsets.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\jfr.jar,C:\Program Files\Java\jdk1.7.0_80\jre\classes,C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext\access-bridge-64.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext\dnsns.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext\jaccess.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext\localedata.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext\sunec.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext\sunjce_provider.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext\sunmscapi.jar,C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext\zipfs.jar,.]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/io/File.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/lang/String.class)]]
[checking Dummy]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/lang/AutoCloseable.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/net/URI.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/lang/System.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/io/PrintStream.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/io/FilterOutputStream.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/io/OutputStream.class)]]
[loading RegularFileObject[.\Dummy2.java]]
[parsing started RegularFileObject[.\Dummy2.java]]
[parsing completed 0ms]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/lang/StringBuilder.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/lang/CharSequence.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/io/Serializable.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Comparable.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/lang/AbstractStringBuilder.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.7.0_80\lib\ct.sym(META-INF/sym/rt.jar/java/lang/StringBuffer.class)]]
[wrote RegularFileObject[Dummy.class]]
[checking Dummy2]
[wrote RegularFileObject[.\Dummy2.class]]
[total 257ms]