Java编译与运行:深入解析javac和java命令行工具
创始人
2024-12-14 12:40:36
0 次浏览
0 评论
Java命令javac、java
Java命令行中的关键工具javac和java在JDK17及其他版本中都有自己的用途。javac负责编译Java源代码,Java用于运行编译后的.class文件。
1、编译步骤:在命令行使用javac时,会在当前目录或指定目录下生成一个类似javacorg/emple/Demo.java的Demo.class文件。
源文件的路径必须完整,包括Java扩展名。
如果Demo.java在当前目录,则需要先创建相应的文件夹结构。
编译时,不仅执行当前文件,还会执行其他依赖的类,这种情况下可能需要使用-classpath选项来指定依赖的jar包。
2、运行时:使用java命令时,.class文件运行为javaorg.example.Demoa1bc23,参数之间有空格。
如果在运行时类路径依赖于其他jar,例如A.jar和B.jar,请在编译时和运行时同时定义A.jar。
如果项目规模较大或依赖关系复杂,Maven或Gradle是管理这些依赖关系的强大工具。
系统变量和环境变量在Java命令中也发挥着重要作用,例如-Dproperty=value用于设置系统变量,JAVA_TOOL_OPTIONS可以全局配置编码和语言设置。
使用-mavenshade插件或创建一个空的jar依赖管理包也很常见。
综上所述,Javac和Java在Java命令行中不仅用于文件编译和执行,还用于系统配置和依赖管理。
javac和java有什么区别和联系?
javac和java命令行中的-classpath选项是一个非常基础的事情,但是由于现有的IDE工具基本上都是用来开发java程序的,所以很少有人知道这一点。javac-classpath,设置搜索类的路径,可以是文件夹、jar文件、zip文件(里面的所有类文件),并且会覆盖CLASSPATH中的所有设置。
-sourcepath,设置搜索编译需要的java文件的路径,可以是目录,jar文件或zip文件(里面的所有java文件)。
所以一个完整的javac命令行将如下所示。
假设abc.java位于路径c:\src,则可以在任意目录下执行以下命令进行编译。
javac-classpathc:\classes;c:\jar\abc.jar;c:\zip\abc.zip-sourcepathc:\source\project1\src;c:\source\project2\lib\src.jar;c:\source\project3\lib\src.zipc:\src\abc.java表示编译需要c:\classed中的类文件,c:\jar\abc.jar中的类文件和c:\zip\abc.zip中的类文件还需要c:\source\project1\src、c:\source\project2\lib\src.jar中的源文件,其中的源文件是c中的源文件:\source\project3\lib\src.zip。
注意:jar和zip中的源文件不会更改。
java-classpath,设置要搜索的类的路径,可以是文件夹、jar文件、zip文件(里面的所有类文件),并将覆盖所有CLASSPATH设置。
由于执行的类也是搜索类的一部分,因此它的类路径也必须在-classpath设置中设置。
这表现在,在要执行的类的路径下执行java时,必须加上句点(.),表示也必须搜索这个目录。
假设abc.class位于路径c:\src中,则可以在任意位置执行以下命令java-classpathc:\classes;c:\jar\abc.jar;c:\zip\abc.zip;c:\srcabc路径问题:如果main.class属于c:\jar\abc.jar且在com.cnblogs.jeffchen这个包中,则执行java-classpathc:\classes;c:\jar\abc.jar;c:\zip\abc.zip;com.cnblogs.jeffchen.main,但是如果classpath是那么为什么那么多jar包呢?而如果com.cnblogs.jeffchen也包含在其他jar包中怎么办?错误?在Windows中,文件路径分隔符是反斜杠\class,或者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
相关文章
全栈开发与Java:职业选择的技术考量与...
2024-12-15 09:02:42Java文件类型揭秘:.java与.ja...
2024-12-14 11:43:01Redis连接断开原因排查:网络、配置、...
2024-12-17 03:51:59武汉Java程序员薪资现状及发展前景解析
2024-12-17 01:06:15Java面试必问:常见技术问题解析及准备...
2024-12-16 11:58:06轻松掌握字符串替换:SUBSTITUTE...
2024-12-17 03:25:14Java字符串常量池与字符常量区别解析
2024-12-17 08:07:26千峰教育:Java培训,助你掌握编程技能...
2024-12-15 02:04:04Java字符串转数字方法汇总与实例教程
2024-12-19 19:49:03Java字符串处理技巧:三种方法截取小数...
2024-12-18 02:28:15最新文章
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
热门文章
1
SQL多表连接查询全解析:JOIN语句应...
sql多表关联查询在执行SQL多表连接查询时,可以使用JOIN语句将多个表连接在...
2
Java中字符串类型详解:String与...
变量有字符类型,为什么没有字符串类型??基本类型:charshort、int、l...
3
JavaSE与JavaEE:从基础到企业...
javase 和javaee的区别?JavaSE和JavaEE...
4
Java程序员面试必知:核心技术问答与技...
java编程程序员技术面试常见面试?随着互联网的不断发展,Java开发已经成为很...
5
Java.exe与Javaw.exe:区...
程序中java和javaw有什么区别java和javaw的区别:两者都是Java...
6
深入解析:Java中的javax包及其与...
JAVA导入时,什么是javax?awt是java1.0,swing是java2...
7
Java去除字符串前空格:常见方法与技巧...
JAVA怎么【只】去掉字符串【前面的】空格?JAVA中是否去除空格1.Strin...
8
北京Java/C++程序员薪资揭秘:云计...
一本211大学4年工作经验java程序员/C++程序员现在北京能...
9
命令行运行Java:从编写到执行全攻略
怎么在命令行下运行java?以下是使用记事本运行Java程序的步骤:编写Java...
10
Java字符串处理与键盘输入、文件读取技...
编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个strAdd函...