正在创建Jar文件,Classpath重复



如果我正在创建superjar.jar,并且它需要一个jar文件stellar.jar,我需要在superjar.jar的清单文件中添加以下行Class-Path: path/to/stellar.jar。但在我的类路径中,我已经有了stellar.jar。这是怎么回事?为什么superjar.jar不能尝试从我的类路径中查找stellar.jar的位置?

我需要在superjar.jar类路径的清单文件中添加以下行:Path/to/stellar.jar.

如果环境变量CLASSPATH被忽略,并且它被忽略,如果您将超级jar用作可执行jar,并使用启动它,那么您需要在超级jar中使用该路径

java -jar superjar.jar

superjar.jar可以访问类路径,如果它在启动时没有用不同的特定类路径覆盖类路径,也没有运行可执行jar的技术,它总是只使用该jar中的classpath,并且总是忽略类路径的其他尝试。

CLASSPATH=/foo/bar/superjar.jar:/opt/some/stellar.jar 
java somepackage.SomeClass

类路径是相对的还是绝对的,这是一个不同的、无关的讨论。上面的例子使用Unix/Linux语法。在Windows上,您可以使用反斜杠和作为分隔符";"。

如果CLASSPATH意味着一个环境变量,那么您将了解到Java、所有IDE和所有Java EE应用程序服务器都会忽略它。

我工作的任何机器上都没有CLASSPATH环境变量,因为它毫无用处。您需要学习如何在不依赖环境变量的情况下正确设置CLASSPATH。

两件事:

  1. stellar.jar的路径相对于superjar.jar
  2. 如果stellar.jar已经在类路径中,那么不管superjar.jar的manifest说什么,它都在类路径

最新更新