【发布时间】:2011-11-07 12:21:28
【问题描述】:
情况:
我正在制作一个用于绘制算法时间复杂度的模拟器。学生可以添加加载自己的 .java 文件来运行它。 我的程序编译(使用'JavaCompiler').java 文件。然后它会尝试加载 .class 文件:
loadedClass = loadClass("customAlgorithms."+this.getClassName()+"");
在 Eclipse 中运行我的程序时,一切正常,学生可以完美地使用该程序。
问题:
然后我将我的项目导出到一个可执行的 jar 文件。编译部分仍然有效,但加载类失败,因为它在 jar 文件中搜索它内部。
我想知道为什么我不能这样做:(用 / 改变 .)
loadedClass = loadClass("customAlgorithms/"+this.getClassName()+"");
有哪些可能的选择?以下是我能想到的:
-
将已编译的 .class 文件添加到当前运行的 .jar 文件中。这还能用吗?
我知道可以编辑 jar 存档。但是这可以在运行时工作而无需重新启动程序吗?
使用 'loadClass()' 的其他方式?这样我就可以加载一个不包含在我的 jar 文件中的类文件
还有其他想法吗?
【问题讨论】:
标签: java jar classloader java-compiler-api