将 jar 文件添加到类路径

发布于 2024-11-15 22:05:36 字数 652 浏览 5 评论 0原文

我正在制作一个构建脚本作为批处理文件(不要问我为什么或建议替代方案。你不会提供帮助)。我有一个名为 CLASSPATH 的变量,与 java 编译器一起使用。 CLASSPATH 包含许多目录和 jar 文件的路径。除此之外,我想添加 .[some-long-path]\lib\ 目录中的每个 jar 文件

它看起来像这样:

SET /p dummy=%CLASSPATH%>classpath.tmp~<nul 
SET WAR_LIB_PATH=war\WEB-INF\lib
DIR %WAR_LIB_PATH% /B | findstr /L ".jar" > jars.tmp~
REM Have to put it into an external file
FOR /f %%j in (jars.tmp~) do (
    SET /p dummy=;%WAR_LIB_PATH%\%%j>>classpath.tmp~<nul 
)
SET /P CLASSPATH=<classpath.tmp~
ECHO %CLASSPATH%

这几乎可以工作。只有两个问题:

  • 条目之间出现空格,这会破坏类路径。
  • 它在 1024 个字符后突然结束。

有人可以帮我解决这个问题吗?

I am making a build script as a batch file (don't ask me why or suggest alternatives. You won't be helping). I have a variable called CLASSPATH that I use with the java compiler. CLASSPATH contains paths to numerous directories and jar files. In addition to those, I'd like to add every jar file in the .[some-long-path]\lib\ directory

It looks something like this:

SET /p dummy=%CLASSPATH%>classpath.tmp~<nul 
SET WAR_LIB_PATH=war\WEB-INF\lib
DIR %WAR_LIB_PATH% /B | findstr /L ".jar" > jars.tmp~
REM Have to put it into an external file
FOR /f %%j in (jars.tmp~) do (
    SET /p dummy=;%WAR_LIB_PATH%\%%j>>classpath.tmp~<nul 
)
SET /P CLASSPATH=<classpath.tmp~
ECHO %CLASSPATH%

This ALMOST works. There are just two problems:

  • Somehow a space appears between entries, which ruins the classpath.
  • It abruptly ends after 1024 characters.

Can someone help me with this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

記憶穿過時間隧道 2024-11-22 22:05:36

如果您使用 java6,则只需编写 dir/* 即可包含目录中的所有 jar

http://download.oracle.com/javase/6/docs/technotes/tools/windows/javac.html

例如,如果目录 foo 包含
a.jar 和 b.JAR,然后是类路径
元素 foo/* 扩展为
A.jar;b.JAR

If you use java6, it's enough to write dir/* to include all jars in the dir

http://download.oracle.com/javase/6/docs/technotes/tools/windows/javac.html

For example, if directory foo contains
a.jar and b.JAR, then the class path
element foo/* is expanded to
A.jar;b.JAR

农村范ル 2024-11-22 22:05:36

如果您正在运行 javac,请尝试使用 -classpath 命令行参数而不是环境变量,因为这些变量在不同操作系统上有大小限制。

纯粹作为旁注,如果您从 JAR 运行程序(例如 java -jar app.jar),您可以 添加元数据 执行完成相同操作的 JAR 文件。

If you are running javac, then try using the -classpath command-line argument instead of the environment variable, since those variables are size-limited on different operating systems.

And purely as a side note, if you are running a program from a JAR (ex java -jar app.jar), you can add metadata do the JAR file that accomplishes the same thing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文