java如何指定文件的路径。要在其文件系统中动态加载的类文件?
当java程序动态加载。类文件
仅是的完全限定类名。需要类文件吗?是
ClassLoader
方法loadClass()
只需要。要动态加载的类文件如果是的话。类文件可以位于文件系统中的任何位置,如何在其文件系统中指定其路径名
当使用命令
java
从Java程序运行这样的字节码创建时,是否需要指定字节码的路径。要在-cp
中动态加载的类文件
谢谢
你可以在下面搜索框中键入要查询的问题!
当java程序动态加载。类文件
仅是的完全限定类名。需要类文件吗?是ClassLoader
方法loadClass()
只需要。要动态加载的类文件
如果是的话。类文件可以位于文件系统中的任何位置,如何在其文件系统中指定其路径名
当使用命令java
从Java程序运行这样的字节码创建时,是否需要指定字节码的路径。要在-cp
中动态加载的类文件
谢谢
# 1 楼答案
您正在合并类和“.class”文件
类的完全限定类名是必需的
不可能!这个与类对应的类文件需要位于相关类加载器的类路径上
如果要从文件系统中的任意文件加载类,需要创建一个新的classloader实例:
如果使用标准类加载器实现之一,它将使用标准方案来解决问题。基于类包名称的类文件位置
可以实现一个自定义类加载器,将FQ类名解析为文件系统对象。。。另一种方式。但这似乎没有必要,因为标准Java编译器将按照标准方案发出
.class
文件你不需要给出那个地方。类文件。您可以给出一个目录的位置,其中。类文件可以解析,如上所述
但是,如果一个正在运行的Java程序生成、编译并加载一个类,它将需要动态地创建一个新的类加载器来加载它。。。可靠
为什么?因为类加载器通常在类路径上缓存目录和JAR索引的内容。因此,当程序编写新文件时,类加载器可能无法了解它
还有一个问题是类加载器不能(从任何位置)两次加载同一个类
最后,请注意,如果两个类加载器加载具有相同完全限定名的类,则运行时类型系统会将它们视为不同的类/类型。你不能在这种类型的两个化身之间转换