zoukankan      html  css  js  c++  java
  • 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类

    一、背景

      最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法。

    二、测试过程

     1.父类代码

     1 package com.hafiz.zhang;
     2 
     3 public class Fu
     4 {
     5     private Integer i ;
     6 
     7     public void sayHello(String name) {
     8         System.out.println("Hello " + name);
     9     }
    10 }

      2.子类代码

    1 package com.hafiz.zhang;
    2 
    3 public class Zi extends Fu
    4 {
    5     private static String name = "Hafiz.Zhang";
    6     public static void main(String[] args) {
    7         new Zi().sayHello(name);    
    8     }
    9 }

    1)第一次直接在基类和子类所在的目录运行javac Zi.java命令,出现以下错误:

    解决办法为:我们需要使用javac *.java命令来进行运行,因为此时存在继承关系,编译子类的同时也需要先编译父类

    2)运行java Zi命令,出现以下错误

    这是什么原因呢?因为我们在编写程序时用到了包名,所以运行类文件时,需要完整名称,命令修改为:java com.hafiz.zhang.Zi

    我们会发现出现以下错误

     

    这是因为我们不存在子文件夹com/hafiz/zhang并且在该子文件夹下不存在Zi.class文件,故找不到主类。

    解决办法是:使用javac  -d . *.java("-d ."代表在当前目录下创建包路径)命令来进行编译,这样javac命令会自动帮我们创建包名所指定的文件夹,并在该文件夹下创建Zi.class文件。

    此时我们还发现,已经自动生成子文件夹com/hafiz/zhang并且在该子文件夹下存在Zi.class文件了。

    这时我们再运行:java com.hafiz.zhang.Zi命令,程序执行成功!

    由此我们得出了在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类的方式:

    1.使用javac -d . *.java进行编译

    2.使用java com.hafiz.Zi(带包名的类全名)命令进行运行!

  • 相关阅读:
    Codeforces 631D Messenger KMP
    Google Codejam 2016 Round1A Problem C BFFs 简单图论
    ACM常用数论知识 总结
    C++ 虚函数表
    HDU 5661 Claris and XOR 贪心
    2013亚洲区域赛长沙站 ZOJ 3732 Graph Reconstruction
    [C++] upper_bound和lower_bound
    2015合肥网络赛 HDU 5489 Removed Interval LIS+线段树(树状数组)
    hdu 3532 Max Angle(atan2的使用)
    poj 1106 Transmitters (计算几何,叉积||极角排序)
  • 原文地址:https://www.cnblogs.com/hafiz/p/5487893.html
Copyright © 2011-2022 走看看