【问题标题】:How to use an external class in a JAR file as one of the classes in my program?如何使用 JAR 文件中的外部类作为我程序中的类之一?
【发布时间】:2026-01-05 06:50:01
【问题描述】:

所以我只是在玩用户插件的想法。我写了一个简单的类,打印出一个字符串。然后我编写了一个接口,它需要一个方法来编辑该字符串。现在,我想让用户能够将 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;

    }

}

【问题讨论】:

    标签: java plugins jar io


    【解决方案1】:

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

    如果是这种情况,您应该简单地在您的程序中使用它,然后在编译时将它的 jar 引用到 java 编译器(考虑到上述类没有打包,因为您没有指定任何这些 -请参阅Java packages - 如果有包,则需要导入 UserMod 类或使用它的完全限定名称)。例如:

    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 构建路径 > 库。您可以添加 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
    

    【讨论】:

    • 啊,谢谢。这就是我正在寻找的东西,但我正在从 Eclipse 编译\运行,或者我正在将自己的源代码导出到 jar 并使用批处理文件运行它。但是是的,我想做的是从外部 jar 中读取一个类。稍后我将不得不阅读更多内容,因为我已经上学了=/。
    • 另外,我知道使用许多其他方法会更容易做到这一点,但我实际上并不特别关心这个程序,我正在尝试学习如何在 jar 文件中支持用户插件。
    • 使用 IDE 更加容易,您只需将 jar 链接到您的项目,它就会在编译/执行期间自动处理类路径。我在上面编辑了我的答案:)
    • 太棒了!没问题,很高兴能为您提供帮助
    最近更新 更多