dos命令⾏中运⾏包含java命令的bat脚本
dos命令⾏中运⾏包含java命令的bat脚本:
@echo off
rem echo current absolute path:%~dp0
rem echo current working directory1:%cd%
rem echo JAVA_HOME: %JAVA_HOME%
rem cd /d F:\Study\sourceCode\
rem echo current working directory2:%cd%
rem echo classpath:%classpath%
java -classpath F:\Study\sourceCode\ WakeOnLan wan lenovo
rem @pause
扩展:
在cmd命令⾏中,⽤javac编译java⽂件可以成功,但是⽤java执⾏却提⽰“不到或⽆法加载主类”。现将该问题的原因以及解决办法记录⼀下。
先理解⼀下系统变量path和classpath的作⽤。
1. path:可执⾏命令的搜索路径,在该路径下搜索可以运⾏的程序或批处理⽂件。
命令⾏中输⼊⼀个命令,则会在path配置的⽬录中查该命令,如果存在则调⽤该程序运⾏,如果不存在则提⽰“ 'XXX' 不是内部或外部命令,也不是可运⾏的程序或批处理⽂件。”
如果要想在cmd中执⾏java,则需要把 配置在path系统变量中。由于cmd会搜索path中⽬录下的⽂件,因此在实际配置的时候,只需要把../jre/bin 配置到path中即可。这样,在执⾏java时,操作系统便会⾃动在../jre/bin ⽬录下搜索 可执⾏程序了。
2. classpath: 类⽂件(.class/.jar)的存储路径。
java 命令执⾏时,会读取classpath中配置的⽬录,然后在该⽬录下去搜索将要执⾏的.class⽂件。如果未搜索到,则会报“不到或⽆法加载主类”错误,如果搜索到,则继续运⾏。
例如:执⾏命令 java Hello;
则java程序会去在classpath配置的所有⽬录和⽂件中取搜索Hello.class⽂件,到之后会把该class⽂件加载到jvm中,为后⾯的运⾏做准备。
classpath这个系统变量只是为java使⽤的,其他程序不会使⽤该变量。
如上所说,java执⾏时,会在classpath中搜索 XXX.class ⽂件,如果不到则报出"不到或⽆法加载主类"的错误。那么在cmd运⾏的时候,我们会随意的在某个⽬录下⾯javac编译,然后java运⾏程序,那么,该⽬录未配置到classpath中,java程序⼜是如何到该⽬录的呢?
还记得配置classpath的时候,有⼀个".;"的配置项吗?其代表的就是执⾏java命令是的所在⽬录,也即是当前⽬录。这样即是把当前⽬录加⼊了classpath,因此java执⾏的时候,会在当前⽬录中搜索XXX.class 的。
注意,当配置 .; 的时候,⼀定要注意前⾯是不是还有其他配置。classpath中多个⽬录要以;分割,⽽这⾥的"."是⼀个配置项,代表的当前⽬录,所以,如果"."前⾯有其他的配置项,则前⾯同样需要加⼊";"。
例如:
"."前⾯有其他配置项,则这样配: ...\bin;.;%JAVA_HOME%\
"."前⾯⽆其他配置项(也即是classpath是以.开始的),则这样配: .;%JAVA_HOME%\
注意,在配置的时候⼀定要确定到底是";.;"还是".;", 否则如果配成...\bin.;%JAVA_HOME%\则就会发⽣:能够javac编译成功,但是java却⽆法执⾏成功的错误。
另:⽤户变量会覆盖掉系统变量
环境变量不区分⼤⼩写
参考链接:当前页面脚本发生错误
发布评论