志在指尖
用双手敲打未来

javac不是内部或外部命令(cmd无法识别javac命令)

javac不是内部或外部命令

在学习java和算法过程中,有时需要运用java的编译和履行指令。可是有时总是会呈现这种场景:javac指令编译成功了,但运用java指令履行二进制class文件时,报找不到或许无法加载主类的过错,如下图。谷歌百度了一把,发现网上说的那些都是扯淡的,没有一个提到点子上了。经过考虑实践看书,总算知道原因了
首要,咱们先看下javac和java指令的差异,详细可以参阅《java核心技术卷二》的4.7.3章节(将类放入包中)和4.8章节(类途径)。
1.javac指令,编译源文件.java,产生二进制.class文件。这个指令是有javac编译器实现的,履行时会去查找类。咱们都会在环境变量中设置classpath,这个类途径便是javac指令查找文件的次序。例如classpath设置为:.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar;,那么javac指令时,首要查找当前目录,假如没有类文件,则查找第二个途径,以此类推知道找到,不然报编译过错。javac指令查找类途径是以文件分隔符””查找的。
2.java指令,履行二进制class文件。该指令是java解说器指令,履行java指令也是同样会去查找类途径。就拿这个例子来说,履行javaTest指令的查找类的步骤为,首要查找当前目录下的包途径,查看是否有该类,假如没有查找%JAVA_HOME%lib包途径下有无该类,其次查找%JAVA_HOME%libtools.jar包途径下有无该类。java指令加载类途径(包途径)是经过“.”或许“”来作为分隔符的,
经过上面两个指令的差异,很容易看出来,上面截图中履行的javaTest,会去该途径下履行Test.class:D:workspacepractice_JEEtest4srccomclqcollectionjavacorecomclqcollectionjavacorejavacore,显然该途径是不存在的,所以会报错。
同理,下面几个途径下履行指令的成果就很容易理解了。
2.不同途径下的java指令履行成果cmd

cmd无法识别javac命令

辨认java却不辨认javac这是因为途径没有装备好
榜首开端我试了许多种方法,比如在path中把%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin途径分成两行,且中心没有;
惋惜仍是不行
后来发现应该是我的java途径写错了
假如你在cmd中输入java-version能出来版别装备信息,说明你的java已经装置装备过了
然后经过java-verbose指令,在输出的最后两行就是java的装置途径,
然后再去装备path途径和java_home就可以了

未经允许不得转载:IT技术网站 » javac不是内部或外部命令(cmd无法识别javac命令)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载