当前位置: 首页 > news >正文

在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(带包名的类全名)命令进行运行!

相关文章:

  • 4.56MariaDB密码重置4.57MariaDB慢查询日志
  • 第一次作业(2)
  • 基于遗传算法的优化问题求解
  • LSMTree - SStable 初体验
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • 242. Valid Anagram(C++)
  • 冒泡排序及回调函数的使用
  • HTML5基础(四)
  • 决战燕京城-10 前往天寿山
  • ubuntu设置源
  • 据Progress调查:2018年,70%的客户在使用NoSQL
  • PopupWindow
  • mysqldump的实现原理
  • containerd正式从CNCF毕业!
  • java动态代理(JDK和cglib)
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • Javascript设计模式学习之Observer(观察者)模式
  • js对象的深浅拷贝
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring声明式事务管理之一:五大属性分析
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 算法之不定期更新(一)(2018-04-12)
  • 自制字幕遮挡器
  • No resource identifier found for attribute,RxJava之zip操作符
  • 选择阿里云数据库HBase版十大理由
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​水经微图Web1.5.0版即将上线
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # Maven错误Error executing Maven
  • (C语言)逆序输出字符串
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (汇总)os模块以及shutil模块对文件的操作
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (强烈推荐)移动端音视频从零到上手(下)
  • (数据结构)顺序表的定义
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • *2 echo、printf、mkdir命令的应用
  • .jks文件(JAVA KeyStore)
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET基础篇——反射的奥妙
  • .NET是什么
  • .Net语言中的StringBuilder:入门到精通
  • .net中应用SQL缓存(实例使用)
  • [Android] Android ActivityManager
  • [Bada开发]初步入口函数介绍
  • [BetterExplained]书写是为了更好的思考(转载)
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序
  • [C++] 统计程序耗时
  • [C++]打开新世界的大门之C++入门
  • [C++打怪升级]--学习总目录
  • [Firefly-Linux] RK3568 pca9555芯片驱动详解
  • [HackMyVM]靶场 Wild