因此,当您将Java( .java)编译为类文件( .class)时,文件的名称可以更改,以及文件的扩展名。如果我在C#中有一段代码将java代码编译成类文件,那么我如何在C#中获取这些输出类文件的名称?
答案 0 :(得分:0)
编译.java文件时,您将获得文件中声明的每个类的.class文件。这意味着主类必须匹配文件名,以及任何内部类和匿名类。
class Outer {
static class Inner {
}
public void run() {
Thread t = new Thread(new Runnable() {
public void run() {
// code here
}
});
}
}
将产生:
Outer.class
Outer$Inner.class
Outer$1.class
因此,假设您正在构建一个干净的目录,您可以获取具有.class扩展名的文件列表,并通过知道Foo.java
中的所有类的列表来获取Foo.class
中的所有类的列表以及以Foo$
开头的其他人。现在这可能会被破坏,因为技术上允许您拥有自己的类$
,但强烈建议您不要这样做,因为它通常表示系统生成的类文件。
答案 1 :(得分:0)
您可以使用编译器选项,例如: javac -d目录 使用处理类启动 java编译器
Process.StartInfo.FileName = "javac";
首先你应该生成一个临时目录。
Directory.Create(Application.StartupPath + @"/TemporaryJavaFiles");
Process.StartInfo.Arguments = "-d "+Application.StartupPath + @"/TemporaryJavaFiles";
Process.Start();
string[] JavaClassess = Directory.GetFilesApplication.StartupPath + @"/TemporaryJavaFiles");
答案 2 :(得分:0)
string[] filePaths = Directory.GetFiles(@directoryString, "*.class");
怎么样?
答案 3 :(得分:0)
使用javac -verbose yourclass.java
并搜索输出中以[write]开头的行。