如何在java清单类路径中使用正则表达式?

如何在java清单类路径中使用正则表达式?,java,classpath,manifest,Java,Classpath,Manifest,我需要在程序执行期间使用额外的JAR。我手动将JAR添加到相对的./lib文件夹,然后执行程序。如何在清单文件中定义类路径?在清单的类路径属性中不能使用正则表达式或其他通配符 Java中只有一个受支持的通配符,只有在“手动”Java调用的命令行上指定了它(即不使用-jar):。我不太确定您到底想要什么,但您可以在运行时添加jar: 在包含jar的目录中使用File.list()列出(jar)文件 对检索到的文件名执行正则表达式 使用URLClassLoader加载jar 我不知道如何将URL

我需要在程序执行期间使用额外的JAR。我手动将JAR添加到相对的./lib文件夹,然后执行程序。如何在清单文件中定义类路径?

在清单的
类路径属性中不能使用正则表达式或其他通配符


Java中只有一个受支持的通配符,只有在“手动”
Java
调用的命令行上指定了它(即不使用
-jar
):。

我不太确定您到底想要什么,但您可以在运行时添加jar:

  • 在包含jar的目录中使用File.list()列出(jar)文件
  • 对检索到的文件名执行正则表达式
  • 使用URLClassLoader加载jar

我不知道如何将URLClassloader注册到主类加载器(如果需要)。但是我想我会这样做。

你不能在规范中修改引导类加载器(使用
addURL()。符合规范的解决方案是只将boostrapping类放入自己的jar中,使用该类查找所有其他jar(包括“真正的”主jar),并将所有这些jar加载到一个类加载器中。然后从real main类调用real main方法。除了使用-cp命令或classloader函数之外,还有其他方法吗?@Suraj:询问其他方法而不告诉我们为什么这些方法对您没有好处是。。。毫无意义。就我个人而言,我觉得这也很粗鲁。对此我深表歉意!实际上,我正在为用户友好的方法编写代码&在可执行jar中部署相同的代码。它是一个通用数据库,用户可以在其中选择自己的数据库。因此,他需要指定所需的连接jar,并将其放在programmaccessable文件夹中。我想如果我可以在清单类路径中使用正则表达式,比如lib/*或lib/*.jar,这样当程序执行时,它会找到所有的jar。如果您只需要从该jar加载选定的类(如JDBC驱动程序),那么您可以通过单独的。您不需要在“主”类路径上使用它。需要明确的是,清单的
类路径
属性中不支持“支持的一个通配符”,只支持命令行上的
-cp
选项。我找到了一个解决方案!我将包括如下变量:类路径:lib/externaljar1.jar lib/externaljar2.jar等,最多5或10个值。然后,在运行时包含JAR时,我只需将其重命名为externaljar1、externaljar2等,并将其复制到lib文件夹中即可我感谢所有回答我问题的人。谢谢!