Java 中带包的类的编译与运行

本文默认:您会使用cmd进行不带包的Java文件的编译和运行。(即javac **.java与java **)

1、一个带包的Java文件的编译与运行

首先编写了一个Main.java文件,注意代码中存在导包语句:package test;
在这里插入图片描述
在路径栏中输入cmd,从当前目录打开命令行
在这里插入图片描述
在这里插入图片描述

要知道,我们虽然写了package test; 但是我没不用自己手动创建test文件夹,而是使用如下命令进行编译,程序会自动产生test文件夹,并将class文件放在里面。

javac -d . *.java

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
那么如何运行呢?

java test.Main

便可运行
在这里插入图片描述
这里需要注意的是 java 命令 后面跟的参数是全类名,即带包名的类名,而不只是简写的类名。
(全类名:包名.类名)

2、辩证思考,如果反其道而行呢?

我们上面编译带包的Java文件是使用的 javac -d命令,如果我还是像编译不带包的Java文件那样编译呢,也就是使用javac命令,会发生什么?
实践是检验真理的唯一标准!
我们写一个简单的A.java文件

package test;
public class A {
    String name;
    int age;
    public void setName(String _name){
        this.name =_name;
    }
    public void setAge(int _age){
        this.age = _age;
    }
    public String getName(){
        return this.name;
    }
    public int getAge(){
        return this.age;
    }
    public static void main(String[] args){
        A a = new A();
        //a.setName("zs");
        a.name="zs";
        a.setAge(18);
        System.out.println(a.getName()+a.getAge());
    }
}

我们直接用javac编译,看看会发生什么化学反应
我们发现编译通过了,并且在与Java文件同级目录下出现了对应的Class文件
在这里插入图片描述
接着我们运行一下
在这里插入图片描述
出现了这样的错误,原因是我们在 A.java 中有包声明,当执行 A.java 源文件时 java 虚拟机首先会在 A.java 当前目录寻找字节码文件,虽然这下找到了,但是因为在 A.java 中有包声明,java 虚拟机紧接着去包目录下寻找有没有 A.class 字节码文件,这下找到了才能够成功执行,不信我们做做实验!
在这里插入图片描述
在这里插入图片描述
这时我们发现执行还是不能通过??这时为什么呢?这里是许多新手遇到的问题,在这里大家必须谨记一点:Java 命令的参数是"类的完整类名",而不是"文件名"。

这个源程序的完整类名应该是 mypack.A,因此应该这么写:java test.A

在这里插入图片描述
这下就可以成功执行了!

3、包的导入创建编译

上面讲的这些都是一般情况,也就是类路径都是在当前目录下,当类路径不在当前目录下是否还能执行呢?又该如果执行呢?
在这里插入图片描述
如图我们把Main.java文件剪切到了上一级目录,Main的class文件在csdn/test下面
在这里插入图片描述
这时我们就需要自己设置 classpath 参数。例如:
在这里插入图片描述
运行成功

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值