`
chaoguo1234
  • 浏览: 1061 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

java命令和javac命令

    博客分类:
  • java
 
阅读更多

在命令行中使用java来运行java程序,搜索类的过程分为以下3步:

1 搜索系统类,大部分都位于JAVA_HOME/jre/lib/rt.jar中

2 搜索扩展类,即那些位于JAVA_HOME/jre/lib/ext下的.jar文件中的类

3 搜索用户类路径 即环境变量CLASSPATH或者在命令行中由java指令的-cp选项指定,如果不指定-cp,那么CLASSPAT环境变量起作用;如果指定了-cp,那么只有-cp指定的类路径起作用。

注意:搜索系统类和扩展类是java虚拟机自动进行的,换句话说,即使环境变量CLASSPATH和java指令的-cp选项没有指定这两个路径,java虚拟机也会自动搜索。

 

下面以一个具体例子来说明,结合import语句,某一个类是如何被找到的。

假设在d:example\src文件夹下存放着java程序的源文件,文件层次结构如下:

d:\example\src\test\A.java

d:\example\src\test\B.java

这两个源文件的代码如下:

 

package test;

import java.util.*;
public class A {
	
	public static void main(String[] args) {
		Date date = new Date();
		B.say();
	}
}

 

package test;

public class B {
	public static void say() {
		System.out.println("Hello");
	}
}

 

 

假设已经编译好了,在d:\example\classes文件下存放着要运行的类文件,其中A.class和B.class都位于test包中,文件层次结构

如下:

d:\example\classes\test\A.class

d:\example\classes\test\B.class

要运行这个程序,在命令行中切换到d:\example目录,即

 


 
 然后,键入如下命令:



 运行程序后就会输出Hello字符串。

其中类的搜寻过程如下:

1 为了找到A.class,虚拟机首先搜索系统类路径和扩展类路径但是找不到,接着搜索用户类路径,由于在java指令中使用了-cp选项,因此,虚拟机以当前工作目录(即命令行调用java指令时所在目录d:\example) + -cp指定的路径(classes) + 包名(test)构成的路径下搜索,d:\example\classes\test下搜索A.class,结果能够找到A.class(-cp所给的相对路径是相对于当前工作目录的,也可以指定绝对路径)

2 A.class引用了Date类,由于在使用Date类时没有指定Date类所在包,那么,虚拟机搜索时会结合所有的import语句,这里import语句java.util.*。

虚拟机在搜索系统类路径时,根据import语句,在JAVA_HOME/jre/lib/rt.jar/java/util文件夹下找到Date类

3 A.class引用了B.class,由于在使用B类时没有指定B类所在包,那么虚拟机搜索时会结合所有的import语句,这里import语句为java.util.*。但是虚拟机无论是结合import语句搜索系统类路径和扩展类路径,还是结合import语句搜索

用户类路径都找不到B.class,这时虚拟机会根据A.class所在的包(test)来构造路径搜索,在d:\example\classes\test中找到B.class文件。

注意:在第3步搜索B.class时,如果在A.java源文件中添加import test.*;语句也是可以的。

 

在命令行中用javac编译java源文件,javac既搜索类文件(过程和java指令一样),也搜索java源文件。以在命令行中编译d:\example\src\test\A.java

为例,只要键入以下命令即可:



 javac会进行如下搜索,

1 搜索源文件A.java,首先从当前工作目录(即运行javac指令时命令行所处的

目录,即d:\example),结合指定的源文件路径(src/test)搜索A.java,结果

在d:\example\src\test下发现A.java

2 搜索Date类,搜索Date类和java指令中搜索一样,结合import语句,最终

在系统类路径JAVA_HOME/jre/lib/rt.jar/java/util下找到Date.class

3 搜索B.java源文件,源文件的搜索路径由-sourcepath指定,具体搜索过程为,结合所有import语句搜索,即搜索d:\example\src\java\util,不能搜索到B.java,在结合A.java声明的包(test)进行搜索,即搜索d:\example\src\test,结果找到B.java(-sourcepath指定的相对路径也是相对于当前目录的,也可以指定绝对路径)

注意:

1 javac也可以有-cp选项,作用和java指令中的一样

2 如果javac指定了-cp没有指定-sourcepath,那么-cp既起到指定用户类路径的作用,也起到指定源文件搜索路径的作用;但是如果javac既指定了-cp,又指定了-sourcepaht,那么-cp只起到指定用户类路径的作用,-sourcepath只起到指定源文件搜索路径的作用

3 javac的-d选项指定生成的类文件存放位置,这里存放于(d:\example\classes)


 

 

 

 

  • 大小: 766 Bytes
  • 大小: 527 Bytes
  • 大小: 985 Bytes
分享到:
评论

相关推荐

    java与javac命令详解

    Java 和 javac 命令是 Java 语言的基本组成部分,它们在 Java 应用程序的编译和执行过程中扮演着重要的角色。javac 命令用于编译 Java 程序源代码,生成字节码文件,而 java 命令用于执行已经编译的字节码文件。 ...

    wsdl2java命令使用

    **WSDL2Java命令使用详解** 在Web服务开发中,WSDL(Web Service Description Language)是一种XML格式,用于定义服务接口、操作、消息结构等。它使得服务提供者和服务消费者可以进行互操作。Apache Axis是Java平台...

    JAVA命令大全.pdf

    本文将从给定文件的标题和部分内容中提取出与Java命令相关的知识点。 首先,Java的可执行文件通常位于Java开发工具包(JDK)的bin目录中。这个目录下包含了多个重要的命令行工具,其中一些我们可以在给定文件的部分...

    JAVA命令大全[参考].pdf

    Java命令大全涵盖了几个重要的工具,它们是Java开发者日常工作中不可或缺的部分。...了解和掌握这些基本的Java命令,对于软件开发人员来说,无论是新手还是资深开发者,都是提高工作效率的重要步骤。

    JDK命令学习 javac java javah jdb

    本文总结了 JDK 中的各种命令,包括 javac、java、javah、jdb 等,详细介绍了 JDB 调试工具的使用方法和命令列表。通过学习这些命令,可以更好地学习和使用 Java 语言。 一、JDK 命令简介 JDK 中提供了许多实用的...

    java命令大全.doc

    java命令大全.doc

    java常见命令指南

    Java命令主要包括编译、运行、调试、性能监控等多个方面,其中`javac`用于编译源代码,`java`用于执行已编译的字节码,而`jps`、`jstat`等工具则用于系统监控和故障排查。本文主要关注`java`命令的高级用法,特别是...

    java Maven中常用命令和插件

    java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用命令和插件java Maven中常用...

    windows命令行中java和javac、javap使用详解(java编译命令)

    2. java命令的用法:java命令用于运行.class文件。需要注意的是,如果源代码中声明了包,必须使用类的完整限定名来运行类。如果源代码文件中首行定义了package,如package com.stopTalking.test,则在运行时需要指定...

    java环境变量设置

    Java 命令是 Java 环境变量设置中的重要命令,包括 JAVA 命令和 JAVAC 命令。JAVA 命令用于运行 Java 程序,而 JAVAC 命令用于编译 Java 程序。 六、Hello World 程序 Hello World 程序是 Java 环境变量设置的示例...

    java实现cmd命令

    用java语言实现windows dos的调用,通过输入dos命令,执行相应的结果

    java 调用doc命令

    Java调用doc命令主要涉及到的是Java的进程操作和命令行接口。在Windows操作系统中,`.doc`文件通常是由Microsoft Word创建的文档。然而,“doc命令”可能是指通过命令行(CMD)来操作或处理这些文档的方式,比如使用...

    JAVA和JAVAC 命令详细介绍

    通过这部分的介绍,读者应当能够理解和掌握在不同操作系统平台上使用javac和java命令来编译和运行Java程序的基本方法和注意事项。同时,也应当能够清晰地理解-classpath和-sourcepath选项的具体作用及其在解决类和...

    在Linux系统下用java执行系统命令实例讲解

    创建`ProcessBuilder`实例后,通过`command()`方法添加命令和参数,然后调用`start()`方法执行。 ```java ProcessBuilder pb = new ProcessBuilder("ls", "-l"); pb.directory(new File("/home/user")); // 设置...

    让EditPlus支持javac,java命令.rar

    《在EditPlus中配置javac和java命令》 在IT行业中,编辑器是开发者的重要工具,而EditPlus作为一款功能强大的文本编辑器,因其简洁的界面、高效的代码编写功能以及丰富的自定义设置,深受广大程序员的喜爱。然而,...

    java 命令模式实例 (设计模式)

    在Java中,命令模式的应用非常广泛,尤其在需要解耦调用者和接收者时。 命令模式的核心组成部分包括:**命令接口**、**具体命令类**、**接收者**和**调用者**。 1. **命令接口**:定义了一个接收者需执行的操作,...

    java能执行,javac不能执行的原因

    当遇到“java能执行,javac不能执行”的情况时,通常意味着系统能够找到并运行Java解释器(即java命令),但无法定位到javac编译器。这背后可能有以下几种原因: 1. **PATH环境变量配置不全**:在Windows操作系统中...

    java 2语言命令详解

    `jar` 命令用于创建、提取和更新.jar文件,这是Java的二进制文件格式,用于打包多个类文件和资源。创建一个包含`HelloWorld.class`的.jar文件,你可以使用: ``` jar cvf HelloWorld.jar HelloWorld.class ``` ...

    java控制台输入cmd命令, ssh远程linux shell命令, 并打印命令输出到控制台

    在Java编程中,有时我们需要与操作系统进行交互,执行系统级别的命令,例如在控制台执行CMD命令或者通过SSH连接远程Linux服务器执行shell命令。这在自动化脚本、系统管理或者远程监控等场景中非常常见。本篇文章将...

Global site tag (gtag.js) - Google Analytics