zoukankan      html  css  js  c++  java
  • 关于package,import,和“找不到可以加载的主类”报错之间的关系

    正在回顾java基础

    目录结构如下:

      

    一  

      以下代码,进入Example所在的文件夹, javac和java都不会报错

    public class Example{
        public static void main(String[] args){
        System.out.println("test1");
        }
    }
    

      

      以下代码,进入Example1所在的文件夹,javac不会报错,java会提示找不到主类

    package com.test;
    public class Example1{
        public static void main(String[] args){
        System.out.println("test1");
        }
    }
    

      

    D:ookcom	est>javac Example1.java
    
    D:ookcom	est>java Example1
    错误: 找不到或无法加载主类 Example1
    

      

      

      二部分的报错的原理:

      编译器在编译源文件时,不检查目录结构。如果编译的类中不依赖于其他包,就不会出现编译错误。但是最终程序无法运行,因为虚拟机找不到类文件。

      将二部分的代码不做任何修改,修改进入的类的名称,在类名前加上package,javac和java都可以正常执行

    D:ook>javac com/test/Example1.java
    
    D:ook>java com.test.Example1
    test1
    

     

      修改Example和Example1的代码,在Example中引用Example1这个类;

    import com.test.Example1;
    public class Example{
        public static void main(String [] args){
        System.out.println("test");
        Example1 ex = new Example1();
        ex.sayHello();
        }
    }
    

      

    package com.test;
    class Example1{
           public void sayHello(){
               System.out.println("hello~");
           }
    }
    

      执行时会报错,说Example1不是公共的

    D:ook>javac Example.java
    Example.java:1: 错误: Example1在com.test中不是公共的; 无法从外部程序包中对其进行访问
    import com.test.Example1;
    

    五,

      四报错的原因,是包的作用域。public可以被任意类使用,private只能被定义他们的类使用,不指定的可以被同一个保重的所有方法访问。

      但是不同package之间,需要声明public字段,才可以跨包使用。

      在Example1的代码中,将类定义为public,这样com.test包以外的类才可以引用

    package com.test;
    public class Example1{
           public void sayHello(){
               System.out.println("hello~");
           }
    }
    

     执行是OK的 

    D:ook>javac Example.java
    
    D:ook>java Example
    test
    hello~
    

     

     

  • 相关阅读:
    Jmeter生成HTML报告
    Python多线程(生成动态参数)
    小程序利用canvas生成图片加文字,保存到相册
    小程序商城数量加减效果
    支付宝小程序tab切换滑动
    数据排序,从小到大,从大到小,ajax
    小程序上拉加载更多,onReachBottom
    小程序tab导航切换样式
    小程序动画Animation,高度增加动画形式,图标旋转动画形式
    iview weapp icon组件自定义图标 小程序
  • 原文地址:https://www.cnblogs.com/zhizhiyin/p/10207728.html
Copyright © 2011-2022 走看看