所以我只是在玩用户插件的想法。我写了一个打印出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;
}
}
答案 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