java为什么javac(javac与java的区别)
大家好,今天来为大家分享java为什么javac的一些知识点,和javac与java的区别的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
java可以运行但是在命令行里javac不行是为什么
在cmd中可以运行java,但运行javac命令时提示:'javac'不是内部或外部命令,也不是可运行的程序或批处理文件。
原因:安装java时把jdk的路径和jre的路径选择成一样,就造成覆盖了。这时候你在lib下也找不到tools.jar和dt.jar.
解决:
1)卸载java,直接用windows自带的卸载这两个有关java的程序;
2)重新安装java,安装时有两次选择路径的机会,第一次是让你选择jdk安装路径,选择为C:\Program
Files\Java\jdk1.8.0_144,第二次是让你选择jre的安装路径,选择为C:\Program
Files\Java\jre(在java目录下新建文件夹jre);
3)环境配置(控制面板-系统-高级系统设置-环境变量)
变量名:Path
变量值:C:\Program Files\Java\jdk1.8.0_144\bin
打开cmd,输入java,javac和java-verbose都成功,就说明安装成功了;
关于环境配置,网上有很多不同的版本,好吧,用了一晚上挨个试,试到怀疑人生。。。不知道是不是只有我不行,但是写出几种提供参考(万一是我电脑有毛病了呢)
第一种:在path环境变量的最前端加上你自己的jdk的这两个目录path= C:\ProgramFiles\Java\jdk1.7.0_67\bin;C:\Program Files\Java\jdk1.7.0_67\bin\jre\bin;
第二种:新建变量(在D盘新建一个java文件夹,在java文件下新建两个文件夹,分别命名为jdk和jre,安装路径分别选择为D:\java\jdk,D:\java\jre)
变量名:Path
变量值:C:\ProgramData\Oracle\Java\javapath;%java_home%\bin;%java_home%\jre\bin
变量名:JAVA_HOME
变量值:D:\java\jdk
变量名:ClassPath
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
javac和java 有什么区别和联系
javac和java命令行中的-classpath选项
这是个很基础的问题,但是因为基本上都是用现有的IDE工具来开发java程序,所以很少有人意识到这一点。
javac
-classpath,设定要搜索类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所有在CLASSPATH里面的设定。
-sourcepath,设定要搜索编译所需java文件的路径,可以是目录,jar文件,zip文件(里面都是java文件)。
所以一个完整的javac命令行应该是这样的,
假设abc.java在路径c:\src里面,在任何的目录的都可以执行以下命令来编译。
javac-classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip-sourcepath c:\source\project1\src;c:\source\project2\lib\src.jar;c:\source\project3\lib\src.zip c:\src\abc.java
表示编译需要c:\classed下面的class文件,c:\jar\abc.jar里面的class文件,c:\zip\abc.zip里面的class文件
还需要c:\source\project1\src下面的源文件,c:\source\project2\lib\src.jar里面的源文件,c:\source\project3\lib\src.zip里面的源文件,
注意:jar,zip里面的源文件不会有什么改动,目录下的源文件,有可能会被重新编译。
java
-classpath,设定要搜索的类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所有的CLASSPATH的设定。
由于所要执行的类也是要搜索的类的一部分,所以一定要把这个类的路径也放到-classpath的设置里面。
表现在,在要执行的类的路径里面执行java时,一定要添加上点号(.)标示本目录也要搜索。
假设abc.class在路径c:\src里面
可以在任何路径下执行以下命令
java-classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip;c:\src abc
问题:如果main.class属于c:\jar\abc.jar,并且在com.cnblogs.jeffchen这个包里,那么执行java-classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip;com.cnblogs.jeffchen.main即可,但是如果classpath中包含多个jar包呢?并且其他jar包中也有com.cnblogs.jeffchen会发生什么情况?错误?
在windows下,
文件路径的分割符为反斜杠\
类或者java文件列表的分割符为分号;
在linux下
文件路径的分隔符位斜杠/
类或者java文件列表的分隔符为冒号:
一个linux下编译和运行的例子
/usr/local/java/bin/javac-classpath/tmp/javatest/lib/mail-1.3.3.jar-d/tmp/javatest/bin//tmp/javatest/src/jp/co/realseed/Capability.java
/usr/local/java/bin/java-classpath/tmp/javatest/lib/mail-1.3.3.jar:/tmp/javatest/bin/ jp.co.realseed.Capability
javac与java的区别
javac和java的区别
1. javac是编译一个java文件的基本命令,通过不同参数可以完成各种配置,比如导入其他类,指定编译路径等。
2. java是执行一个java文件的基本命令,通过参数配置可以以不同方式执行一个java程序或者是一个jar包。
3. javap是一个class文件的反编译程序,可以获取class文件的反编译结果,甚至是jvm执行程序的每一步代码实现。
总结:Javac是编译、Java是执行,编写Java代码后,使用Javac进行编译生成.Class文件,.Class文件使用 Java命令执行代码;
为什么java可以用但是javac不能用
java可以运行,只能说明JRE环境变量配置正确;javac不能运行,说明JDK环境变量配置错误。所以还是环境变量没有设置正确
我的电脑点右键,选择“属性”,选择“高级”标签,进入环境变量设置,分别设置如下三个环境变量:
设置JAVA_HOME:
一是为了方便引用,比如,JDK安装在C:\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径,那么以后要使用这个路径的时候,只需输入%JAVA_HOME%即可,避免每次引用都输入很长的路径串;
二则是归一原则,当JDK路径改变的时候,仅需更改JAVA_HOME的变量值即可,否则,就要更改任何用绝对路径引用JDK目录的文档,要是万一没有改全,某个程序找不到JDK,后果是可想而知的----系统崩溃!
三则是第三方软件会引用约定好的JAVA_HOME变量,不然,你不能正常使用该软件.
在系统环境变量那一栏中点->新建JAVA_HOME(JAVA_HOME指向的是JDK的安装路径)
变量名: JAVA_HOME
变量值: C:\jdk1.6.0
(1)设置好path变量,使得我们能够在系统中的任何地方运行java应用程序,比如javac、java、javah等等,这就要找到我们安装JDK的目录,
OK,本文到此结束,希望对大家有所帮助。