java和javac,javac和java的区别
老铁们,大家好,相信还有很多朋友对于java和javac和javac和java的区别的相关问题不太懂,没关系,今天就由我来为大家分享分享java和javac以及javac和java的区别的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
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
javacpl和javac有何区别
javac是用来编译java程序的。
主要信息:
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。最新的C语言标准是C18。
当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。
Java中javac和java命令使用方法
javac用于编译Java源文件为字节码,java用于运行编译后的类,二者是Java开发的基础命令行工具。以下是具体使用方法及注意事项:
一、javac命令:编译Java源文件功能:将.java源文件编译为JVM可执行的.class字节码文件。基本语法:
javac [选项]源文件名.java常见用法:
编译单个文件:
javac HelloWorld.java生成HelloWorld.class文件(需确保文件名与类名一致)。
指定输出目录:
javac-d./classes HelloWorld.java将编译结果存放到./classes目录中(目录需存在)。
编译多个文件:
javac File1.java File2.java同时编译多个源文件。
编译整个包:
javac com/example/*.java编译com/example包下的所有Java文件(需保持目录结构与包声明一致)。
注意事项:
类名与文件名必须完全一致(包括大小写)。若源文件包含包声明(如package com.example;),需在对应目录结构下编译(如com/example/HelloWorld.java)。二、java命令:运行编译后的类功能:启动JVM并执行已编译的.class文件。基本语法:
java [选项]类名注意:类名无需包含.class扩展名。
常见用法:
运行单个类:
java HelloWorld要求当前目录下存在HelloWorld.class文件。
从指定目录运行:
java-cp./classes HelloWorld或使用完整参数:
java-classpath./classes HelloWorld通过-cp或-classpath指定类搜索路径(如编译输出目录./classes)。
运行带包结构的类:若类在com.example包中(如com.example.HelloWorld),需在项目根目录下执行:
java com.example.HelloWorld关键点:
执行目录需为包结构的根目录(如com/example/HelloWorld.class的父目录的父目录)。
类名需包含完整包路径(如com.example.HelloWorld)。
三、实际操作示例示例文件:HelloWorld.java
public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello, World!");}}步骤:
打开终端,进入文件所在目录。编译:javac HelloWorld.java生成HelloWorld.class。运行:java HelloWorld输出结果:Hello, World!四、常见问题与解决方案环境变量未配置:
错误提示:'javac' is not recognized as an internal or external command。
解决:设置JAVA_HOME环境变量,并将%JAVA_HOME%bin(Windows)或$JAVA_HOME/bin(Linux/macOS)添加到系统PATH中。
类名与文件名不一致:
错误提示:class X is public, should be declared in a file named X.java。
解决:确保文件名与public类名完全一致(如public class HelloWorld需保存在HelloWorld.java中)。
主类未找到:
错误提示:Could not find or load main class HelloWorld。
解决:检查类路径是否正确(如使用-cp指定目录)。
确认类名包含包路径(如com.example.HelloWorld而非仅HelloWorld)。
包结构错误:
错误提示:Error: Could not find or load main class com.example.HelloWorld。
解决:在项目根目录下执行命令(如com/example/HelloWorld.class的父目录的父目录)。
确保目录结构与包声明一致(如com/example/目录下存放HelloWorld.class)。
五、总结javac:编译工具,需注意文件名与类名一致、输出目录设置及包结构。java:运行工具,需正确指定类路径(-cp)及完整包名。环境配置:确保JAVA_HOME和PATH设置正确。掌握这两个命令是Java开发的基础,理解其工作原理有助于后续学习构建工具(如Maven/Gradle)和IDE(如IntelliJ IDEA/Eclipse)的使用。
好了,关于java和javac和javac和java的区别的问题到这里结束啦,希望可以解决您的问题哈!