在运行时了解某个特定JAR文件是否已经在我的类路径中的最佳方法是什么?(如果不是这样,我应该在运行时添加它)。
我事先不知道jar的名称,也不知道其中的类。用户可以选择它。jar代表一个运行时可插拔组件(我的问题中的一个驱动程序)。
发布于 2013-05-16 19:12:03
一种实用的方法:Class.forName("com.myclass"),其中com.myclass是位于目标jar内部(且仅位于内部)的类;如果抛出ClassNotFoundException,则jar不在当前类路径上。
但是要记住,loading a jar at runtime并不是很简单,你需要弄乱类加载器。通常情况下(也有例外),您应该能够在运行之前显式地将jar添加到类路径中。
更新:更新后的问题指出,我们事先不知道“jar的名称或其中的类”;如果是这样,这个答案显然不适用。答案将取决于您特定的类加载器。在通常的情况下,AlexAndas的答案应该是有效的。
发布于 2013-05-16 19:03:50
String classpath = System.getProperty("java.class.path")这将为您提供类路径上的内容。然后,您可以将其解析为所需的jar文件
发布于 2013-05-16 19:55:52
一般来说,您不能这样做,因为您的应用程序中可能存在不提供jar文件信息的类加载器。对于URLClassLoaders,您可以使用Alex Adas的解决方案
https://stackoverflow.com/questions/16585739
复制相似问题