在运行java -jar时包含外部jar文件。

13 浏览
0 Comments

在运行java -jar时包含外部jar文件。

根据我的阅读,当您执行以下命令时:\n

java -jar foo.jar

\n那么主类路径会被忽略,而类路径会从清单文件中获取。\n此外,命令行上声明的类路径也会被忽略。因此,在以下命令中:\n

java -classpath /usr/local/jar/foobar.jar -jar foo.jar

\n/usr/local/jar/foobar.jar会被忽略。\n最后,我了解到清单文件只能包含相对路径,而不能包含系统中存在但不在执行的jar文件中的绝对路径的外部jar包。\n那么,如何包含系统中存在但不在执行的jar文件中的绝对路径的外部jar包呢?

0
0 Comments

问题的出现的原因是在执行java -jar my-main.jar命令时,无法引入外部的jar文件。解决方法是在包含jar文件的文件夹中创建一个名为"lib"的文件夹,并在其中放置需要引入的外部jar文件。同时,在Manifest.MF文件中通过设置Class-Path来指定外部jar文件的路径。具体的操作步骤如下:

1. 在包含jar文件的文件夹中创建一个名为"lib"的文件夹。

2. 将需要引入的外部jar文件放置在"lib"文件夹中。

3. 打开Manifest.MF文件,并添加以下内容:

Main-Class: com.mastergaurav.test.app.MainClass
Class-Path: lib/one.jar lib/two.jar

其中,"com.mastergaurav.test.app.MainClass"是主类的名称,"lib/one.jar lib/two.jar"是外部jar文件的路径。

4. 保存Manifest.MF文件。

5. 执行以下命令来运行jar文件:

java -jar my-main.jar

另外,如果执行java -cp /addtional/class/path -jar abcd.jar命令,额外的类路径将不会被忽略。

需要注意的是,根据我目前的了解,无法直接将一个jar文件设置为另一个jar文件的Class-Path,除非编写一个自定义的类加载器。即使这样,根据一个半天的尝试来看,似乎也是不可能的。可以尝试使用One-Jar等工具来解决这个问题。

希望以上内容对你有帮助。

0
0 Comments

有时候在运行Java程序时,我们会遇到一个问题,即使用java -jar命令时无法包含外部的Jar文件。这篇文章将介绍这个问题出现的原因以及解决方法。

问题的出现原因是因为java -jar命令只会加载指定的Jar文件,并忽略任何其他的类路径设置。因此,如果我们想要在运行时包含外部的Jar文件,就需要使用java -cp命令来设置类路径,并指定主类的全限定名。

解决方法是使用java -cp命令来运行程序,并设置类路径来包含外部的Jar文件。以下是一个示例命令:

java -cp /usr/local/jar/foobar.jar:/some/other/path.jar com.your.main.classname

这个命令中的-cp参数指定了类路径,其中包括了外部的Jar文件,而com.your.main.classname是程序的主类的全限定名。可以将这个命令放入一个脚本或批处理文件中,以便于使用时不需要记住完整的类路径。

需要注意的是,在Windows系统中,类路径的分隔符应该使用分号(;)而不是冒号(:)。所以在Windows系统上运行时,命令应该类似于:

java -cp C:\path\to\jar1.jar;C:\path\to\jar2.jar com.your.main.classname

,当使用java -jar命令时无法包含外部的Jar文件,可以使用java -cp命令来设置类路径并指定主类的全限定名,从而解决这个问题。

0