我知道类在Java代码中首次使用时会加载。我在运行java代码期间传递了一个类路径。
流程为:Class>>主要>>新主题>>调用类构造函数>>线程运行代码>>尝试创建一个不存在的类>>的对象Catch ClassNotFoundException>>手动将不存在的类放在类路径中>>再次尝试创建该非现有类的对象>>仍然抛出ClassNotFoundException
一旦发生ClassNotFoundException,我将所需的.class文件放在classpath目录中,并且不想重新启动我的程序。在发生ClassNotFoundException之后,当我从Main启动新线程并遵循流程时,它工作正常。但是当我和同一个帖子呆在一起时,效果不好。
该怎么做我的程序在运行时重新获取classpath类文件?
答案 0 :(得分:1)
每个线程都有自己的类加载器,可以使用Thread.currentThread().getContextClassLoader()
进行访问。由于第一个线程在其类加载器中没有类,因此抛出ClassNotFoundException。即使您手动将所需的.class文件复制到类路径目录,该线程也不会意识到它。这是因为除非重新启动程序或创建新线程,否则不会重新加载类。
你提到过:
Catch ClassNotFoundException>>手动将不存在的类放在类路径中
在捕获ClassNotFoundException之后,您是否将当前线程置于休眠状态,直到您复制了丢失的.class文件为止?你是怎么处理的?