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

简介: 一、背景   最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法。 二、测试过程  1.父类代码 1 package com.

一、背景

  最近在使用记事本编写带有包名并且有继承关系的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(带包名的类全名)命令进行运行!

相关文章
|
2月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
175 57
|
29天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
81 8
|
2月前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
77 1
|
2月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
2月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
149 4
|
2月前
|
Java Android开发
Eclipse 创建 Java 类
Eclipse 创建 Java 类
36 0
|
Java API Windows
Java创建透明与任意形状窗口
Java创建透明与任意形状窗口 一: Java 2D图形基础知识 自从Java Swing发布以来,Java的图形能力得到了很大的提升,JDK6的高级版本开始支持创 建自定义形状的JFrame,结合Java 2D图形的相关API,可以实现任意形状JFrame的创建。
1021 0
|
16天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
74 17
|
27天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者