如何知道JVM是否可以访问特定类?

时间:2010-01-21 17:09:40

标签: java

有没有办法知道某个特定是否可由JVM访问,然后抛出ClassNotFoundException,以便我们可以跳过该类访问,并可以在运行时使用替换类。

4 个答案:

答案 0 :(得分:3)

你能展示一些相关的代码吗?在不确切知道你要做什么的情况下,我会说:

  1. 您应该能够确保所引用的所有课程都在您的课程路径上。

  2. 如果必须,您可以捕获可能发生的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的类路径。 但这对于很少(或没有)的好处来说太过分了。