我知道类在 Java 代码中首次使用时会加载。我在运行 java 代码期间传递了一个类路径。
流程是:类>>主>>新线程>>调用类构造函数>>线程运行>尝试创建不存在类的对象>>捕获ClassNotFoundException>>手动将不存在类放入类路径中>> 再次尝试创建该不存在类的对象 >> 仍然抛出 ClassNotFoundException
一旦发生 ClassNotFoundException,我将所需的 .class 文件放在类路径目录中,并且不想重新启动我的程序。发生 ClassNotFoundException 后,当我从 Main 启动新线程并遵循流程时,它工作正常。但当我使用同一个线程时,效果不佳。
如何让我的程序在运行时重新获取类路径类文件?
最佳答案
每个线程都有自己的类加载器,可以使用 Thread.currentThread().getContextClassLoader() 访问该类加载器。由于第一个线程的类加载器中没有该类,因此会引发 ClassNotFoundException。即使您手动将所需的 .class 文件复制到类路径目录中,线程也不会意识到这一点。这是因为除非重新启动程序或创建新线程,否则不会重新加载类。
您提到过:
Catch ClassNotFoundException >> Put non-existing class in classpath manually
捕获 ClassNotFoundException 后,是否让当前线程进入 hibernate 状态,直到复制丢失的 .class 文件?你是如何处理这个问题的?
关于java - 即使类已放入类路径目录中,也会重复 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39586505/