在C#中编译Java文件后如何获取输出CLASS文件名?

时间:2011-09-19 19:08:08

标签: c# java

因此,当您将Java( .java)编译为类文件( .class)时,文件的名称可以更改,以及文件的扩展名。如果我在C#中有一段代码将java代码编译成类文件,那么我如何在C#中获取这些输出类文件的名称?

4 个答案:

答案 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]开头的行。