我在jar文件两个类层次结构,其中唯一的区别是, Main
在example2.jar没有包,而Main
在example1.jar是包的一部分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.Main
和Engine.GameWindow
。 为什么example2.jar只打印出Engine.GameWindow
?