2012-01-29 142 views
38

从命令行,我该如何设置Java CLASSPATH选项以指向包含多个jar文件的一个或多个目录?有递归目录和子目录支持的通配符吗?设置类路径文件夹

(我的JAR文件在几个子目录排序)

+1

顶层目录的路径应该足够了。 – kosa 2012-01-29 12:28:12

+6

Dup的http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpath – Vadzim 2015-06-10 13:16:37

回答

54

如果您使用的是Java 6或更高版本,你可以使用这种形式的通配符:

java -classpath ".;c:\mylibs\*;c:\extlibs\*" MyApp 

如果你想添加所有子目录:LIB \ A \ LIB \ b \,LIB \ C \,没有机制,除了这一点:

java -classpath ".;c:\lib\a\*;c:\lib\b\*;c:\lib\c\*" MyApp 

有没有像lib\*\*lib\**瓦特你想完成的工作类型的ildcard。

+14

这不是我的意见。它从这里事实http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html Quote:'子目录不是递归搜索。例如,foo/*仅在foo中查找JAR文件,而不是在foo/bar,foo/baz等中。“ – msi 2012-01-29 12:56:45

+9

并且如果您想知道为什么路径有”。“在开始时,要确保通过env变量等在系统中设置的现有类路径不会被覆盖。 – 2012-01-29 14:19:23

+6

@msi对不起,我的目的是感谢您的回复。 – MJM 2012-01-30 06:20:50

6

命令作为

java -classpath ".;C:\MyLibs\a\*;D:\MyLibs\b\*" <your-class-name> 

上述命令将设置提到路径用于执行命名的TestClass类只有一次类路径。

如果您要执行一个以上的类,那么你可以按照这个

set classpath=".;C:\MyLibs\a\*;D:\MyLibs\b\*" 

在这之后,你可以通过简单地键入

java <your-class-name> 

以上,只要你想只执行尽可能多的参加命令将工作,直到您关闭命令提示符。但是在关闭命令提示符后,如果您将重新打开命令提示符并尝试执行某些类,则必须借助上述任何一种方法再次设置类路径(第一种执行一个类和第二种方法的方法一个如果你想设置的CLASSPTH只有一次,以便它可以为每次工作,然后做如下

1. Right click on "My Computer" icon 
2. Go to the "properties" 
3. Go to the "Advanced System Settings" or "Advance Settings" 
4. Go to the "Environment Variable" 
5. Create a new variable at the user variable by giving the information as below 
    a. Variable Name-  classpath 
    b. Variable Value- .;C:\program files\jdk 1.6.0\bin;C:\MyLibs\a\';C:\MyLibs\b\* 
6.Apply this and you are done. 

记住这将工作每一次执行多个类)

。您不需要一次又一次明确设置类路径。

注意:如果您想在某一天后添加一些其他库,请不要忘记在“环境变量”的“变量值”末尾添加一个分号,然后键入路径你的新库在分号后面。因为分号分隔不同目录的路径。

希望这会帮助你。