我有两个程序:一个 CLI 程序和一个 GUI 程序。 GUI 是 CLI 的前端,也是另一个程序的 GUI。
我正在导入 CLI 的类并在 GUI 中扩展它们以将 GUI 元素添加到类中,一切都很棒。
但现在我想拆分当前已嵌入 GUI 中的 CLI(作为包含的 JAR)。 JAR位于固定位置(/opt/program/prog.jar),并且该应用程序只能在Linux上使用,所以我意识到这打破了传统的Java思想。
我已经编辑了 list 文件中的 ClassPath 以反射(reflect)此更改,并且它工作正常。但是,当我删除该文件时,GUI 无法加载,因为无法加载该类。
有没有办法尝试加载一个类,如果它不起作用,那么就做其他事情?本质上,我试图捕获 ClassNotFound 异常,但还没有任何运气。
最佳答案
检查类是否存在的一种常见方法是执行 Class.forName("my.Class")。您可以使用捕获 ClassNotFoundException 的 try/catch 来包装它并决定要做什么。如果需要,您可以在具有 main() 的包装类中执行此操作。您可以尝试加载该类,如果成功,则在加载的类上调用 main() ,如果没有,则执行其他操作。
public static void main(String arg[]) {
try {
Class.forName("my.OtherMain");
// worked, call it
OtherMain.main();
} catch(ClassNotFoundException e) {
// fallback to some other behavior
doOtherThing();
}
}
关于java - 检测Java类是否可加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1705151/