【问题标题】:Get the available functions/methods of java package in C#在 C# 中获取 java 包的可用函数/方法
【发布时间】:2011-01-28 14:22:09
【问题描述】:

我想知道是否可以从 C# 获取 java 包中可用的类、函数/方法。假设我有一个包含 SampleClass 的 java 包 p。我想从 C# 检查这个包,以便我可以得到 SampleClass。我不想在 C# 中使用这个类,实际上我只想获取可用类和函数的名称。

希望这是可能的!

谢谢

【问题讨论】:

  • “Java 包”是指 jar 文件吗?
  • 是“Java 包”-> jar 文件。

标签: c# java packages


【解决方案1】:

假设您安装了 JDK,您可以使用 'jar -tf jarName.jar' 获取类列表,然后您可以对其进行解析。

要获取有关特定类的更多信息,您可以使用命令行“javap”实用程序打印出所有方法和字段的列表。这是一种相当容易解析的格式。例如:

javap -classpath . com.prosc.io.ZipCreator
Compiled from "ZipCreator.java"
public class com.prosc.io.ZipCreator extends java.lang.Object{
    public com.prosc.io.ZipCreator();
    public java.lang.Integer getLevel();
    public void setLevel(java.lang.Integer);
    public void createZip(java.io.File, java.io.File)       throws java.io.IOException;
    public void createZip(java.io.File, java.util.zip.ZipOutputStream)       throws java.io.IOException;
    public void setMaximumZipSize(long);
    static {};
}

【讨论】:

  • 当我使用 javap 时,它给了我一个错误 - 错误找不到 layoutlib。我的 jar 文件放在 d:\javaproject\ 中,我在同一目录中使用 javap,例如:D:\javaproject>javap layoutlib.jar
  • 您不会将 jar 文件的名称传递给 javap,而是将包含在 jar 中的类的名称传递给您。使用“jar -tf jarName.jar”获取类列表。假设您在其中看到一个名为 /my/cool/Button.class 的类。使用“javap -classpath jarName.jar my.cool.Button”查看函数列表。
【解决方案2】:

如果您询问 Jar 文件。它只是一个 zip 文件。

您可以像这样将文件夹和文件映射到类名:“/java/lang/Object.class” --> “java.lang.Object”。

this 帖子中,您可以阅读有关在 c# 中列出 .zip 文件夹的内容的信息。

这种方法的优点是您无需担心安装 JDK,但如果您正在计划任何复杂的事情,例如我将寻求@Jesse Barnum 提出的解决方案的方法列表。

【讨论】:

    猜你喜欢
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 2021-09-29
    相关资源
    最近更新 更多