如何在JAR文件中使用外部类作为我程序中的一个类?

时间:2015-10-01 04:34:12

标签: java plugins jar io

所以我只是在玩用户插件的想法。我写了一个打印出String的简单类。然后我写了一个接口,需要一个方法来编辑String。现在,我想让用户能够将Jar文件插入到文件夹中(与程序一起打包),我的程序将其读入,并将其用作实现我创建的接口的类。所以基本上我正在寻找一种读取jar文件内容的方法,并将其类作为我的程序类之一。对任何不正确的术语提出道歉,我对此非常陌生。如果这是解决问题的错误方法让我知道,我可以采取更好的方式。谢谢!

类别:

public class Project {
    static String message = "default message";
    public static void main(String args[]) {
        System.out.println(message);
    }
}

界面:

public interface Mod {
    void modifyText(String moddedMessage);
}

用户插件

public class UserMod implements Mod {

    public void modifyText(String moddedMessage) {
        moddedMessage = "New Message";
        Project.message = moddedMessage;

    }

}

1 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我,但你只想使用.jar文件中的外部java类?

如果是这种情况,你应该在你的程序中使用它,然后在编译时将它的jar引用到java编译器(考虑到没有提到的类的包装,因为你没有指定任何类型 - 请参阅Java packages - 如果有软件包,则需要导入UserMod类或使用它的完全限定名称。 E.g:

public class Project {
    static String message = "default message";
    public static void main(String args[]) {
        String newMessage = "new message";
        UserMod userMod = new UserMod();
        userMod.modifyText(newMessage());
        System.out.println(message);
    }
}

然后,在命令行上编译并运行:

javac -cp UserMod.jar Project.java
java Project
编辑:你说你正在使用eclipse。那应该更容易。右键单击项目将启动上下文菜单。单击属性,然后转到Java Build Path>库。您可以添加jar文件或类文件夹。摘自here

但是,您可以简单地要求用户将要打印的文本作为参数传递给程序,就像这样(args数组只是作为参数传递给程序的字符串数组):

public class Project {
   public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("No parameters. Please give me something to print!!");
        } else {
            for (String parameter : args) {
                System.out.println(parameter);
            }
        }
    }
}

然后,使用您喜欢的任何参数编译并运行它:

javac Project.java
java Project "new message"
>> new message