如何为Ubuntu中的文件夹设置CLASSPATH变量

Modified on: Thu, 14 Jun 2018 12:05:23 +0800

我知道export CLASSPATH=/usr/local/java/tools.jar:$CLASSPATH会将tools.jar添加到CLASSPATH,但我想将文件夹设置为CLASSPATH

像这样

export CLASSPATH=/usr/local/java/lib/:$CLASSPATH

但它不起作用。

最佳答案

首先,一般来说,设置env var CLASSPATH通常会导致比它解决的问题更多的问题 - 因为并非所有应用程序都需要/需要相同的类路径,&当类路径中包含不需要的甚至不需要的jar时,通常会中断。一个Java应用程序应该只包含它所需的最小数量的jar,不多也不少。

当您拥有需要设置类路径的特定个人应用程序时,通常首选命令行选项:java -cp path1:path2:...。桌面图标可以更改其命令以包含这些选项,或者可以修改shell脚本以包含这些选项。

即便如此(并且因为规则总是有例外),然后根据java的版本(这需要java 6或更高版本),您可以通过添加指定将整个jars目录添加到类路径中目录末尾的“*”;例如,以下内容:

 /dir1/foo.jar:/dir2/dir3:/dir5/dir6/*:etc...

意思是:

  • /dir1/foo.jar - (单个jar)将被添加到类路径中;
  • /dir2/dir3 - 此目录中的所有un-jar'd类都将添加到类路径中(必须采用正确的包结构;例如,com.my.Foo.class必须在/dir2/dir3/com/my/Foo.class
  • /dir5/dir6/* - 此目录中的所有jar(即/dir5/dir6/*.jar)都将添加到类路径中。请注意,此“*”不是通配符(您不能使用f*.jar甚至*.jar);它是一个特殊字符,表示“添加所有罐子”

通常,如果必须将整个jar目录添加到应用程序的类路径中,则应用程序未正确捆绑。相反,应用程序应该有一个清单,其中包含它所依赖的罐子列表。或者至少,只应该在您的类路径中添加一个jar,并且该jar可以在其清单中包含某个子目录中的整个jar列表。

作者:michael

相关问答

添加新评论