设置类路径的文件夹

Sam*_*Sam 47 java jar classpath

从命令行,如何将Java CLASSPATH选项设置为指向包含多个jar文件的一个或多个目录?是否存在递归目录和子目录支持的通配符?

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

msi*_*msi 67

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

java -classpath ".;c:\mylibs\*;c:\extlibs\*" MyApp
Run Code Online (Sandbox Code Playgroud)

如果要添加所有子目录:lib\a \,lib\b \,lib\c \,除此之外没有其他机制:

java -classpath ".;c:\lib\a\*;c:\lib\b\*;c:\lib\c\*" MyApp
Run Code Online (Sandbox Code Playgroud)

对于你想要完成的工作,没有任何类似的lib\*\*lib\**通配符.

  • 这不是我的意见.事实上来自http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html引用:`子目录不是递归搜索的.例如,foo/*仅在foo中查找JAR文件,而不是在foo/bar,foo/baz等中查找JAR文件. (18认同)
  • 在Mac和Linux中,`:`是类路径deilimeter (11认同)
  • 如果你想知道为什么路径有".;" 在开始时,它是确保通过env变量等在系统中设置的现有类路径不会被覆盖. (9认同)
  • @msi对不起,我的目的是感谢您的回复. (6认同)

Cha*_*har 6

使用命令as

java -classpath ".;C:\MyLibs\a\*;D:\MyLibs\b\*" <your-class-name>
Run Code Online (Sandbox Code Playgroud)

上面的命令只会将提到的路径设置为classpath一次,以执行名为TestClass的类.

如果要执行多个类,则可以执行此操作

set classpath=".;C:\MyLibs\a\*;D:\MyLibs\b\*"
Run Code Online (Sandbox Code Playgroud)

在此之后,只需键入即可执行任意数量的类

java <your-class-name>
Run Code Online (Sandbox Code Playgroud)

在关闭命令提示符之前,上述命令将起作用.但是在关闭命令提示符后,如果要重新打开命令提示符并尝试执行某些类,则必须在上述两种方法的帮助下再次设置类路径.(执行一个类和第二个类的第一种方法)一个用于执行更多类)

如果您只想将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.
Run Code Online (Sandbox Code Playgroud)

请记住,每次都会有效.您不需要一次又一次地显式设置类路径.

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

希望这会帮助你.