zoukankan      html  css  js  c++  java
  • 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:StudysourceCode
    rem echo current working directory2:%cd%
    rem echo classpath:%classpath%
    java -classpath F:StudysourceCode WakeOnLan wan lenovo
    rem @pause
    

    扩展:
    在cmd命令行中,用javac编译java文件可以成功,但是用java执行却提示“找不到或无法加载主类”。现将该问题的原因以及解决办法记录一下。

    先理解一下系统变量path和classpath的作用。

    1. path:可执行命令的搜索路径,在该路径下搜索可以运行的程序或批处理文件。
        命令行中输入一个命令,则会在path配置的目录中查找该命令,如果存在则调用该程序运行,如果不存在则提示“ 'XXX' 不是内部或外部命令,也不是可运行的程序或批处理文件。”
        如果要想在cmd中执行java,则需要把java.exe 配置在path系统变量中。由于cmd会搜索path中目录下的文件,因此在实际配置的时候,只需要把../jre/bin 配置到path中即可。这样,在执行java时,操作系统便会自动在../jre/bin 目录下搜索java.exe 可执行程序了。

    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中多个目录要以;分割,而这里的"."是一个配置项,代表的当前目录,所以,如果"."前面有其他的配置项,则前面同样需要加入";"。
      例如:
        "."前面有其他配置项,则这样配: ...in;.;%JAVA_HOME%in.......
        "."前面无其他配置项(也即是classpath是以.开始的),则这样配: .;%JAVA_HOME%in.......
      注意,在配置的时候一定要确定到底是";.;"还是".;", 否则如果配成...in.;%JAVA_HOME%in.......则就会发生:能够javac编译成功,但是java却无法执行成功的错误。

    另:用户变量会覆盖掉系统变量
      环境变量不区分大小写

    参考链接:https://www.cnblogs.com/PerkinsZhu/p/9766400.html

  • 相关阅读:
    Django(app的概念、ORM介绍及编码错误问题)
    Django(完整的登录示例、render字符串替换和redirect跳转)
    Construct Binary Tree from Preorder and Inorder Traversal
    Single Number II
    Single Number
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Binary Tree Zigzag Level Order Traversal
    Recover Binary Search Tree
    Add Binary
  • 原文地址:https://www.cnblogs.com/mediocreWorld/p/15188761.html
Copyright © 2011-2022 走看看