运行时使用java checkpackage.ChekImport即可。

解决方案 »

  1.   

    ************
    这个我也试过
    ************
    ————————————————————————————————————————
    D:\mytools\jsdk\projects\practice>java checkpackage.CheckImport
    Exception in thread "main" java.lang.NoClassDefFoundError: checkpackage/CheckImp
    ort
    ————————————————————————————————————————
      

  2.   

    加了package checkpackage;
    则在此包定义的Check.java ---> checkpackage.Check.class
    CheckImport.java -->checkpackage.CheckImport.class 
    在同一包定义的可以不用import(如"import checkpackage.*"可以去掉).
    不过运行时就得带上包名了即:
    java checkpackage.CheckImport
    而不是"java checkpackage\CheckImport"
      

  3.   

    或者使用java checkpackage/ChekImport
      

  4.   

    把java文件放在checkpackage目录中,在checkpackage的上一级目录:javac -d . checkpackage\*.javajava checkpackage.CheckImport
      

  5.   

    看看你是否已经将java程序编译成class了,
    javac -d checkpackage/*.java
      

  6.   


    1.你的情况是将两个类放在同一个文件夹中!
    *****************************************
    D:\jsdk\projects\package\Check.class
    *****************************************
    package checkpackage;         class Check                    //public class Check 公共类;
    {
    public static void checkPrint(){
    System.out.println( "class Check is from package CheckPackage!" );
    }
    }
    ***********************************************
    D:\jsdk\projects\checkpackage\CheckImport.class
    ***********************************************
    //package checkpackage;//import checkpackage.*;            都有没有必要!public class CheckImport
    {
    public static void main( String[] args ){
    Check a = new Check();
    a.checkPrint();
    //Check.checkPrint();
    //System.out.println("32142432we");
    }
    }在这里你这两个类文件都放在了一个文件夹里....没有必要这么麻烦啦.还有你要引用的类要求是public类型!
    2.在不同文件夹中1.你的情况是将两个类放在同一个文件夹中!
    *****************************************
    D:\jsdk\projects\package\Check.class         路径修改一下
    *****************************************
    package package;         pbulic class Check                    
    {
    public static void checkPrint(){
    System.out.println( "class Check is from package CheckPackage!" );
    }
    }
    ***********************************************
    D:\jsdk\projects\checkpackage\CheckImport.class   两个放在不同目录的文件 
    ***********************************************
    package checkpackage;import package.*;            public class CheckImport
    {
    public static void main( String[] args ){
    Check a = new Check();
    a.checkPrint();
    //Check.checkPrint();
    //System.out.println("32142432we");
    }
    }
    这样应该ok了,万事大吉!___________________________________________________________________
      

  7.   

    谢谢,是这样的。
    **************************
    thinking in java第5章12题。
    **************************
    --------------------------------------------------
    ///:c05:local:PackagedClass.class
    package c05.localclass PackagedClass{
    public PackagedClass(){
         System.out.println( 
             "Creating a packaged class" );
       }
    }
    ///:c05:foreign:Foreign.java
    package c05.foreign;import c05.local.*public class Foreign{
         public static void main( String[] args ){
                     PackagedClass pc = new PackagedClass();
    }
    }
    ________________________________________________________
    为什么编译会出错呢?
      

  8.   

    假设有两个java文件,A.java(package a)和B.java(package b),且A的头部包含import b.*; classpath=.;D:\JDK\LIB\TOOLS.JAR,如果A中调用了B,  在A.java所在的目录下执行javac A.java的时候,那么:1.如果A.java与B.java在同一个目录,根据classpath设置在当前目录找到了B.java,编译会出错,因为B.java的包声明为package b;那么B.class应该在当前目录下的b目录下找到B.class,这样包声明就跟路经不匹配了,所以产生错误。
      
    改正:在当前路径下建立目录b,在目录b下建立文件B.java原因:因为classpath中含有当前路径,那么在当前路径下,根据A.java中的import b.*; 可找到深一层的目录b中的B.java.
      
    若有问题可以短消息联系,或者看一下《java深度历险》,王森著。