带有外部 .jar 的 Java 命令行

发布于 2024-11-08 23:24:57 字数 478 浏览 5 评论 0原文

我使用 .jar 开发一个项目来重用代码。

所以我有一个名为 TOOLS.jar 的 .jar,并且我在文件 HelloWorld.java 中开发了一个简单的应用程序,该应用程序从 TOOLS.jar 引用我的包 TOOLS

我使用此命令行进行编译:

javac -g -d C:\MyApp -cp TOOLS.jar HelloWorld.java

它成功了,当我想执行我的应用程序时,我使用此命令(我位于 C:\MyApp 文件夹中):

java -cp <path>\TOOLS.jar;. HelloWorld

它是成功的,但我的问题是:

当我有多个外部 .jar 文件时,如何执行我的应用程序?

我是否必须使用 -cp 选项在命令中添加每一项?

有没有一种方法只生成一个二进制文件并执行它(如 C 程序的 .exe)?

I develop a project using .jar to reuse code.

So I have on .jar named TOOLS.jar, and I develop a simple application in file HelloWorld.java which refer my package TOOLS from TOOLS.jar

I compile with this command line:

javac -g -d C:\MyApp -cp TOOLS.jar HelloWorld.java

It's successful, and when I want to execute my application I use this command (I'm in C:\MyApp folder):

java -cp <path>\TOOLS.jar;. HelloWorld

It's successful, but my question is:

How do I execute my application when I have multiples external .jar files?

Do I have to add each one in command with -cp option?

Is there a way to generate only one binary file and execute it (as .exe with C programs)?

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

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

发布评论

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

评论(2

等往事风中吹 2024-11-15 23:24:57

将每个 jar 文件参数连接到 cp:

; on Windows
: on Linux or Mac

例如,

java -cp <path>\TOOLS.jar;.;<path>\jar2.jar;<path>\jar3.jar HelloWorld

在较新的 JVM(我认为是 6+)上,您还可以使用 * 将所有 JAR 附加到目录中,例如

java -cp .;<path>\*; HelloWorld

要更进一步并创建单个打包的可执行文件,请参阅 这个问题

Concatenate each jar file argument to cp with:

; on Windows
: on Linux or Mac

e.g.

java -cp <path>\TOOLS.jar;.;<path>\jar2.jar;<path>\jar3.jar HelloWorld

on newer JVMs (6+, I think) you can also use the * to append all JARs in a directory e.g.

java -cp .;<path>\*; HelloWorld

To go a step further and create a single packaged executable see this question.

幽蝶幻影 2024-11-15 23:24:57

如果一个文件夹中有许多 jar 文件,并且不想手动将它们附加到类路径中。您可以在 Windows 上使用 .bat,在 Linux 上使用 shell。

来自 tomcat 的 cpappend.bat

rem ---------------------------------------------------------------------------
rem Append to CLASSPATH
rem
rem $Id: cpappend.bat 301115 2002-08-04 18:19:43Z patrickl $
rem ---------------------------------------------------------------------------

rem Process the first argument
if ""%1"" == """" goto end
set CLASSPATH=%CLASSPATH%;%1
shift

rem Process the remaining arguments
:setArgs
if ""%1"" == """" goto doneSetArgs
set CLASSPATH=%CLASSPATH% %1
shift
goto setArgs
:doneSetArgs
:end

和另一个使用“for”语句将所有 jar 文件附加到类路径的 bat 文件

set CURRENT_DIR=%cd%
set CLASSPATH=.
for %%i in (%CURRENT_DIR%\lib\*.jar) do call cpappend.bat %%i
start java -Duser.dir=%CURRENT_DIR%  -cp %CLASSPATH% a.b.c.MainApp

If you have many jar files in one folder and don't want to append them to classpath manually. You can you a .bat on windows or shell on linux.

cpappend.bat from tomcat

rem ---------------------------------------------------------------------------
rem Append to CLASSPATH
rem
rem $Id: cpappend.bat 301115 2002-08-04 18:19:43Z patrickl $
rem ---------------------------------------------------------------------------

rem Process the first argument
if ""%1"" == """" goto end
set CLASSPATH=%CLASSPATH%;%1
shift

rem Process the remaining arguments
:setArgs
if ""%1"" == """" goto doneSetArgs
set CLASSPATH=%CLASSPATH% %1
shift
goto setArgs
:doneSetArgs
:end

And another bat file which use "for" statement to append all the jar file to classpath

set CURRENT_DIR=%cd%
set CLASSPATH=.
for %%i in (%CURRENT_DIR%\lib\*.jar) do call cpappend.bat %%i
start java -Duser.dir=%CURRENT_DIR%  -cp %CLASSPATH% a.b.c.MainApp
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文