有没有办法知道某个特定是否可由JVM访问,然后抛出ClassNotFoundException
,以便我们可以跳过该类访问,并可以在运行时使用替换类。
答案 0 :(得分:3)
你能展示一些相关的代码吗?在不确切知道你要做什么的情况下,我会说:
您应该能够确保所引用的所有课程都在您的课程路径上。
如果必须,您可以捕获可能发生的ClassNotFound异常,然后再尝试使用其他类型。
答案 1 :(得分:1)
我认为你应该在ClassNotFoundException异常的异常处理程序中实现一个解决方案。
由于您想要检测该类是否在运行时可访问,因此在执行程序之前无法找到它。
答案 2 :(得分:1)
没有人提到这个,因为对于上述问题,捕捉ClassCastException确实是最好的方法......但是......
如果您只想检查类路径上是否存在.class文件,那么尝试将该类作为资源获取可能会有效。
URL u = getClass().getResource( "/java/util/List.class" );
ClassLoader,无论出于何种原因,不从可达资源加载它们的类将意味着将找不到该类,但大多数标准类加载器将使其工作。我提到它是因为当它工作时,你能够更准确地看到.class文件在磁盘上的位置。
答案 3 :(得分:0)
在没有接收到异常的情况下,无法询问类加载器或调用Class.forName(),但如果仅在init期间发生,则不会造成损害。 唯一的可能性是检查文件系统中db-jar的类路径。 但这对于很少(或没有)的好处来说太过分了。