如何从Jar文件中识别Applet子类?

时间:2013-12-14 04:10:23

标签: java reflection applet japplet

我在jar文件中有以下两个类层次结构,唯一的区别是example2.jar中的Main没有包,而example1.jar中的Main是包user的一部分}。

example1.jar

// user/Main.java
package user;
import Engine.GameWindow;
public class Main extends GameWindow { }

// Engine/GameWindow.java
package Engine;
import java.applet.Applet;
public abstract class GameWindow extends Applet { }

example2.jar

// Main.java
import Engine.GameWindow;
public class Main extends GameWindow { }

// Engine/GameWindow.java
package Engine;
import java.applet.Applet;
public abstract class GameWindow extends Applet { }

我创建了这个程序来确定jar文件中的哪些类是Applet的子类。

import java.applet.Applet;
public class JarClassIdentifier 
{
  public static void main(String[] args) 
    throws Exception 
  {
    // example1.jar: args = { "user.Main.class", "Engine.GameWindow.class" }
    // example2.jar: args = { "Main.class", "Engine.GameWindow.class" }
    for(String class_name : args) {
      class_name = class_name.replace(".class", "");

      Class<?> c = Class.forName(class_name);

      if(Applet.class.isAssignableFrom(c))
        System.out.println(class_name);
    }
  }
}   

对于example1.jar,程序正确打印user.MainEngine.GameWindow。为什么example2.jar只打印出Engine.GameWindow

0 个答案:

没有答案