如何在c#中编译Java文件后得到输出的CLASS文件名?

本文关键字:输出 CLASS 文件名 文件 Java 编译 | 更新日期: 2023-09-27 18:08:58

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

如何在c#中编译Java文件后得到输出的CLASS文件名?

在编译.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$开头。现在,这可能会被破坏,因为从技术上讲,您可以拥有自己的类,其中包含$,但强烈建议不要这样做,因为它通常表示系统生成的类文件。

您可以使用如下编译器选项:javac -d directory使用Process Class启动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");

string[] filePaths = Directory.GetFiles(@directoryString, "*.class");呢?

使用javac -verbose yourclass.java在输出中搜索以[written]开头的行