如何在c#中编译Java文件后得到输出的CLASS文件名?
本文关键字:输出 CLASS 文件名 文件 Java 编译 | 更新日期: 2023-09-27 18:08:58
因此,当您将Java (. Java)编译为类文件(.class)时,文件的名称以及文件的扩展名都可以更改。如果我有一段c#代码,它将java代码编译成类文件,那么我如何在c#中获得这些输出类文件的名称?
在编译.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]开头的行