gpt4 book ai didi

java - 如何将所有子文件夹添加到类路径 [如 -cp "lib\**\*"]

转载 作者:行者123 更新时间:2023-12-02 09:35:40 26 4
gpt4 key购买 nike

我找不到一种方法来添加类路径<内特定目录的所有子目录中的所有/strong> 无需提及每个子文件夹 [...]

例如,假设我有这种目录层次结构:

aplication_Folder:
⎿ App.jar
external_libraries:
⎿ folder1:
⎿ File_1.1.jar
⎿ File_1.2.jar
⎿ folder2:
⎿ File_2.1.jar
⎿ File_2.2.jar
⎿ File_2.3.jar
...

我如何运行我的应用程序(App.jar)而不是像这样选择每个子文件夹:

java -cp "./App.jar;./external_libraries/folder1/*; ./external_libraries/folder2/*;" app.App

以类似这一行的方式:

java -cp "./App.jar;./external_libraries/**/*;" app.App

.

[更新]解决的方式:

现在我使用该代码(有一些小问题,例如,它没有获得名称在“文件夹3”和子...子文件夹之间有空格的子文件夹):

   @echo off

set CLASSPATH=./App.jar;

for /f %%i in ('dir .\external_libraries\/b') DO (
call :append ./external_libraries/%%i/*
)

java app.App
goto :eof

:append
set CLASSPATH=%CLASSPATH%%1;

其中填充 CLASSPATH 为:

./App.jar;./external_libraries/folder1/*;./external_libraries/folder2/*;..."

比如,可以这样使用:

java app.App

.

针对像我这样的新手的额外信息:

不需要需要使用 CLASSPATH 来运行应用程序,如下所示:

java -cp "%CLASSPATH%" app.App

因为当您已经设置了 CLASSPATH 的变量内容时,java 会自动读取它(只需确保变量的名称实际上是“CLASSPATH”而不是其他任何内容)请参阅评论以了解更多信息,为什么[...]

.

结束:

任何回复将不胜感激。提前致谢,乔治。

最佳答案

实际上你有两个选择:

  • 自定义启动脚本,您可以在其中获取所有必需的 jar 并填充类路径并将其传递给 -cp java 参数。详情见评论

  • 自定义类加载器,您的应用程序开始时在 cp 中只有一个(根)jar,然后主类确定根 jar 目录,然后遍历子目录并获取所有所需的 jar,然后使用抓取的 jar 创建新的类加载器并启动申请。

关于java - 如何将所有子文件夹添加到类路径 [如 -cp "lib\**\*"],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57540977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com