【发布时间】:2017-08-30 17:24:35
【问题描述】:
我正在尝试使用 java 来查看是否可以将插件系统构建到我的应用程序中。
我希望插件遵守的一条规则是它们需要实现接口Cake。
我的目录是:
Projectfolder
bin
Foo.class
Cake.class
src
Foo.java
Bar.java
Cake.java
Cake.java 和 Foo.java 在包中 test.package 和 Bar.java 在包中可以说是 plugin.stuff 包(因为我无法控制它,它当然可以是任何东西)。
Foo.java 和 Cake.java 编译成 JBC (JavaByteCode) 没有问题。
由于我不想将我的应用程序代码发送给所有对创建插件感兴趣的人,我想从它的 .class 文件中读取有关接口Cake(在Bar.java 中实现)的信息。这可能吗?
需要哪些 javac 命令来告诉 javac 从 Cake.class 获取依赖关系 Cake?
为了澄清我希望能够从:
Foo.class
Cake.class
Bar.java
到:
Foo.class
Cake.class
Bar.class
【问题讨论】:
-
不清楚您在这里要做什么。你说过插件必须实现
Cake。为此,他们必须至少拥有Cake接口(@987654339@,通常包装在一个罐子中)。无论如何,your 代码不必从类文件中显式地动态加载Cake(用于运行程序的类加载器——例如内置于java工具中的类加载器——将去做)。为什么你认为它需要? -
我是否必须将 .class 文件包装在 jar 中才能使用该类文件中的类或接口来编译 .java 类?不能直接提供.class文件吗?
-
不,你不必把它包在罐子里,这就是我说“通常”的原因。
.class文件就足够了。 -
只要在CLASSPATH上可以找到Java类,就会被使用。
-
运行“javac Bar.java”时出现错误“Bar.java:3: error
expected import ./test.package.DisplayPlugin;”